游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3454|回复: 5

请问各位大虾,怎么样把一个24位色的图片用程序转换为16位

[复制链接]

15

主题

79

帖子

79

积分

注册会员

Rank: 2

积分
79
发表于 2006-11-30 13:26:00 | 显示全部楼层 |阅读模式
请问各位大虾,怎么样把一个24位色的图片用程序转换为16位色的,请知道的告诉一声,谢谢,有点急

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20737
发表于 2006-11-30 18:14:00 | 显示全部楼层

Re:请问各位大虾,怎么样把一个24位色的图片用程序转换为1

可以先获取16bit的排列方式,现在大多都是565组合,然后根据这个排列方式,把数据按比例降低。

0

主题

275

帖子

676

积分

高级会员

Rank: 4

积分
676
发表于 2006-11-30 19:33:00 | 显示全部楼层

Re:请问各位大虾,怎么样把一个24位色的图片用程序转换为1

WORD RGB2P16(DWORD p888  )
{
BYTE R8= (p888>>16))&0xff;
BYTE G8=( p888>>8 )&0xff;
BYTE B8= p888 & 0xff;

WORD R5= R8>>3;
WORD G6= G8>>2;
WORD B5= B8>>3;

return (R5<<11 )|(G6<<5 )| B5;
}

具?一?就是加上???括弧
?????Q
p565=RGB2P16(p888);




15

主题

79

帖子

79

积分

注册会员

Rank: 2

积分
79
 楼主| 发表于 2006-12-2 20:54:00 | 显示全部楼层

Re:请问各位大虾,怎么样把一个24位色的图片用程序转换为1

能说清楚一点吗?>如果具体用函数该怎么写,望高手指教小弟一下,谢谢

15

主题

79

帖子

79

积分

注册会员

Rank: 2

积分
79
 楼主| 发表于 2006-12-7 17:46:00 | 显示全部楼层

Re:请问各位大虾,怎么样把一个24位色的图片用程序转换为1

顶下,帮帮忙

11

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
发表于 2006-12-12 18:13:00 | 显示全部楼层

Re:请问各位大虾,怎么样把一个24位色的图片用程序转换为1

引用《Windows游戏编程大师技巧》
1.创建一个m*n个字(WORD)大小的缓冲,每个字是16位
2.把24位图象装载到你的BITMAP_FILE结构中,而后读取缓冲,用下面粗糙的色彩换算算法把24位色彩转换成16位;
//each pixel in BITMAP_FILE.buffer() is encoded as 3-bytes
//in BGR order,or BLUE,GREEN,RED
//assuming index is pointing to the next pixel...
UCHAR blue=(bitmap.buffer[index*3+0])>>3,
          green=(bitmap.buffer[index*3+1])>>2,
          red=(bitmap.buffer[index*3+2])>>3;
//build up 16 bit color word
USHORT color=_RGB16BIT565(red,green,blue);
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 01:59

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表