IOS中8位图的颜色处理

图片格式简介

      RGB1 RGB4 RGB8 都是调色板类型的 RGB 格式,在描述这些媒体类型的格式细节时,通常会在 BITMAPINFOHEADER 数据结构后面跟着一个调色板(定义一系列颜色)。它们的图像数据并不是真正的颜色值,而是当前像素颜色值在调色板中的索引。

CGImage
      在IOS中,进过处理的图片数据会被保存在CGImage对象中,而8位图的调色板会被保存在CGImage的颜色空间CGColorSpace中。
     我们可以通过如下几个函数获取8位图的调色板数据
CGImageGetColorSpace
CGColorSpaceGetNumberOfComponents
CGColorSpaceGetColorTable
     
  然后可以对调色板进行处理,之后再根据处理之后的调色板创建新的图片数据

CGImageCreateCopyWithColorSpace

  
CGColorSpaceRef genericColorSpace = CGImageGetColorSpace(inImage);
int nCom = CGColorSpaceGetNumberOfComponents(genericColorSpace);
CGColorSpaceModel model = CGColorSpaceGetModel(genericColorSpace);


int size = CGColorSpaceGetColorTableCount(genericColorSpace);
unsignedchar table[768] = { UCHAR_MAX };

CGColorSpaceGetColorTable(genericColorSpace, table);
genericColorSpace = CGColorSpaceCreateDeviceRGB();


for (int i = 0; i < 768; i++) {

    //TODO: Deal with color table.



}


CGColorSpaceRef colors = CGColorSpaceCreateDeviceRGB();
CGColorSpaceRef colorSpace = CGColorSpaceCreateIndexed(colors, size, table);
CGImageRef imageRef = CGImageCreateCopyWithColorSpace(cgimg, colorSpace);


CGColorSpaceRelease(colorSpace);
CGColorSpaceRelease(colors);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值