gpt4 book ai didi

cocoa - 将 RAW 缓冲区绘制到 CGBitmapContext

转载 作者:行者123 更新时间:2023-12-03 16:39:36 24 4
gpt4 key购买 nike

我有一个 RGB 格式的原始图像缓冲区。我需要将它绘制到 CGContext,以便获得 ARGB 格式的新缓冲区。我通过以下方式实现这一点:

使用CGDataProviderCreateWithData从原始缓冲区创建数据提供程序,然后使用API​​:CGImageCreate从数据提供程序创建图像。

现在,如果我使用 CGContextImageDraw 将此图像写回 CGBitmapContext。

有没有办法将缓冲区直接写入 CGContext,而不是创建中间图像,这样我就可以避免图像创建阶段?

谢谢

最佳答案

如果您想要的只是获取没有 alpha 分量的 RGB 数据并将其转换为完全不透明度的 ARGB 数据(所有点的 alpha = 1.0),为什么不直接将数据复制到新的缓冲区中呢?

// assuming 24-bit RGB (1 byte per color component)
unsigned char *rgb = /* ... */;
size_t rgb_bytes = /* ... */;
const size_t bpp_rgb = 3; // bytes per pixel - rgb
const size_t bpp_argb = 4; // bytes per pixel - argb
const size_t npixels = rgb_bytes / bpp_rgb;
unsigned char *argb = malloc(npixels * bpp_argb);
for (size_t i = 0; i < npixels; ++i) {
const size_t argbi = bpp_argb * i;
const size_t rgbi = bpp_rgb * i;
argb[argbi] = 0xFF; // alpha - full opacity
argb[argbi + 1] = rgb[rgbi]; // r
argb[argbi + 2] = rgb[rgbi + 1]; // g
argb[argbi + 3] = rgb[rgbi + 2]; // b
}

关于cocoa - 将 RAW 缓冲区绘制到 CGBitmapContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2597767/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com