我笨,大家帮我,ABGR to rgb 的转换问题,趴谢!
我已从图像文件读入数据到raster了, 可其排列顺序是ABGR,显示出来颜色是反的,我想把他转换成RGB的顺序(去掉A通道),写了一天总是出错!谁知道怎末做啊,最好有现成的转换函数!谢谢啊,缘分啊! 问题点数:0、回复次数:10Top
1 楼hahaqi()回复于 2004-09-04 13:55:54 得分 0
uint32 *temp = (uint32*)GlobalAlloc(GMEM_FIXED, ( w * h * 4));
m_pBits = (uint32*)GlobalAlloc(GMEM_FIXED, ( w * h * 3));
TIFFReadRGBAImage(tiff, w, h,temp, 0);
int total = w * h;
uint32 * final = m_dib->m_pBits;
for (int i = 0 ; i< total ; i++ ){
memcpy( final,temp+(4*i)+3, 1);final++;
memcpy( final,temp+(4*i)+2, 1);final++;
memcpy( final,temp+(4*i)+1, 1);final++;
}
这样写怎末不行?Top
2 楼hahaqi()回复于 2004-09-04 13:58:43 得分 0
救命啊Top
3 楼ehom(?!)回复于 2004-09-04 14:03:03 得分 0
嵌入ASM调用BSWAP指令,然后取前三字节,这样效率比较高Top
4 楼hahaqi()回复于 2004-09-04 14:04:29 得分 0
哥哥,麻烦了,给个现成的Top
5 楼hahaqi()回复于 2004-09-04 14:35:46 得分 0
不是吧,这种问题都没人答Top
6 楼hahaqi()回复于 2004-09-04 15:03:27 得分 0
定
Top
7 楼lyzcom(初学者)回复于 2004-09-04 21:38:46 得分 0
我没有看错吧?ABGR转到RGB……很困难吗?
那我就随便写一点吧,汇编的
mov eax, ABGR
and eax, 000000ffh
mov ecx, ABGR
and ecx, 00ff0000h
mov edx, ABGR
and edx, 0000ff00h
shl eax, 16
shr ecx, 16
or eax, ecx
or eax, edxTop
8 楼lyzcom(初学者)回复于 2004-09-04 21:39:47 得分 0
忘了说,最后eax就是你要的RGB值Top
9 楼weakwater(我是河南人)回复于 2004-09-06 17:53:43 得分 0
帮你UPTop
10 楼derryzhang(雨田)回复于 2004-10-05 11:40:59 得分 0
upTop




