mac_osx_rgb888RGB565

本文介绍了如何在MacOSX环境下实现从RGB888色彩空间到RGB565色彩空间的数据转换。通过具体的代码示例展示了源图像数据的读取、像素值的位操作及目标数据的存储过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mac osx:(888_2_565)

 

unsigned char *srcData = [srcBitImageRep bitmapData]; //rgb888

unsigned char *destData = (unsigned char *)malloc(pixelsWide * pixelsHigh * 2);


unsigned short *pDestData;

pDestData = (unsigned short*)destData;


unsigned long nPos16 = 0, nPos24, nSize;

nSize = pixelsWide * pixelsHigh * 3;

for (nPos24 = 0 ; nPos24 < nSize ; nPos24+=3 ,nPos16+=2)

{

*pDestData = 0;

unsigned short tmp;

tmp =  srcData[nPos24] & 0x00F8; //1111 1000 R

tmp <<=8;

*pDestData |=  tmp;

 

tmp =  srcData[nPos24+1] & 0x00FC; //1111 1100 G

tmp <<=3;

*pDestData |=  tmp;

 

tmp =  srcData[nPos24+2] & 0x00F8; //1111 1000 B

tmp >>=3;

*pDestData |=  tmp;

 

pDestData ++;

}

_________________

565-2-888

 

dest = [bitmap bitmapData];

int i, end = width*height, rgb24i = 0;


unsigned char *pBuffer = (unsigned char *)malloc(strlens);

[pRgb565_data getBytes:pBuffer length:strlens];

unsigned short * src = (unsigned short *)pBuffer;


for (i=0; i<end; i++, rgb24i += 3)

{

unsigned short *pixel = src;

dest[rgb24i]   = (*pixel >> 8) & 0x00F8

dest[rgb24i+1] = (*pixel >> 3) & 0x00FC;//G

dest[rgb24i+2] = (*pixel << 3) & 0x00F8 ; //B

src++;

}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值