如何使用RGB数据创建CGImage?

6

有没有人能给我展示一个如何使用的清晰示例

CGImageRef CGImageCreate 
(
   size_t width,
   size_t height,
   size_t bitsPerComponent,
   size_t bitsPerPixel,
   size_t bytesPerRow,
   CGColorSpaceRef colorspace,
   CGBitmapInfo bitmapInfo,
   CGDataProviderRef provider,
   const CGFloat decode[],
   bool shouldInterpolate,
   CGColorRenderingIntent intent
);

我有一个CGFloat类型的数据缓冲区[dataBuffer],它包含了整张图片的所有RGB数据。基本上,它从像素R(0,0),G(0,0),B(0,0),R(0,1)...一直到R(width,height), G(width,height), B(width,height)。

我知道图片的大小,即宽度x高度。如何利用我已有的信息创建CGImage?

请帮忙解答,谢谢。

我发布了另一个问题,其中包括上述问题。nschmidt正确回答了我的问题,以下是链接:

将RGB数据转换为Objective-C++ Cocoa中的位图

2个回答

2
最大的谜团就是数据提供者。答案是,你需要创建一个CGDataProvider对象,它要么包含你拥有的像素数据,要么能够提供这些数据。
一些较小的谜团是关于colorSpacebitmapInfo应该传入什么值。它们分别是一个CGColorSpace对象和一个CGBitmapInfo位掩码。 decode数组的解释可能不太清晰,但是很明显的是,你可能不需要它。传入NULL即可。
除了这些问题,其他一切都是自明的,或者在此函数的文档中有很好的解释。

链接已经失效。 - wcochran
在谷歌上搜索了CGImageCreate,这是弹出的URL:https://developer.apple.com/documentation/coregraphics/1455149-cgimagecreate?language=objc - Chen OT
链接已经失效 :( - wcochran
已解决。感谢 Chen OT,使得我们能够轻松地首先获取到 CGImageCreate,然后访问其他正确的链接。 - Peter Hosey

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接