【发布时间】:2014-09-19 00:25:22
【问题描述】:
ios-converting-uiimage-to-rgba8-bitmaps-and-back 是我发现的一篇非常好的文章,它描述了我们如何处理位图缓冲区和 UIImages。本文处理 RGBA32/RGBA8 位图图像。位图图像是用 char * buffer 创建的,大小为 width * height * 4。即每个像素信息将有 4 个字节的数据,每个 1 个字节分别用于存储红色、绿色、蓝色和 alpha。在创建位图图像时,会给出位图信息“kCGImageAlphaPremultipliedLast”。 CGColorSpaceCreateDeviceRGB() 用于将位图缓冲区转换回 UIImage。通过更改位图信息,我们还可以处理 RGBA 24 图像。 我需要处理 RGBA 5551 位图图像。红色、绿色和蓝色的颜色被赋予 5 位来表示相应的颜色,而 1 位用于存储 alpha 值。如果我们正在创建这样的位图,我们如何为 char * 位图分配缓冲区。是否可以转换为 UIImage 数据类型?任何帮助将不胜感激。
【问题讨论】:
-
获取 David Gelphman 和 Bunny Laden 的 Programming with Quartz 副本。最接近的格式可能是:kCGImageAlphaNoneSkipFirst`,这是一个 XRGB,每种颜色有 5 位(XRGB 1555)。也许您可以将前导位设置为您的 Alpha 值。
-
@Zaph 我已经使用 XRGB 转换了字符缓冲区,我正在获取 UIImage 对象并使用 ImageView 完美呈现。但是我得到的字符缓冲区是 RGB 5551 类型的。实际图像颜色与我使用 XRGB 转换的颜色不匹配(kCGImageAlphaNoneSkipFirst 位图信息)。您能否建议任何解决方案,例如将 5551 rgb 缓冲区转换为 1555 rg 缓冲区或 iOS sdk 中支持的任何其他类型。
-
如果需要,交换缓冲区中的位,只需使用“C”位移,and and or 操作。
标签: ios objective-c bitmap uiimage