3

我正在将存储在磁盘上的 TIFF 中的图像数据加载到缓冲区中,随后我将使用该缓冲区来创建 OpenGL 纹理。我通过写入CGContext. 原始图像在每个像素上都是 100% 白色。从一个像素到下一个像素的唯一变化是 alpha 值。

当我写入 时CGContext,不会保留透明像素的颜色。“你为什么关心透明像素的颜色”你问?缩放图像时,透明像素的颜色会变得可见,从而产生难看的深色轮廓伪影。

我尝试将数据直接从CGImage缓冲区读取并使用该缓冲区创建我的纹理(使用CGImageGetDataProvider(image)),但这仅适用于 CGImage 的颜色空间为 RGBA 的情况。大概是CGContextDrawimage处理从一种颜色空间到另一种颜色空间的转换。

有什么方法可以告诉我CGContextDrawimage保留透明像素的颜色吗?或者我将不得不以其他方式加载我的图像?

4

0 回答 0