如何使用kCGImagePropertyGIFImageColorMap或创建颜色表?

use*_*946 49 cocoa core-graphics objective-c

我正在尝试修改一些GIF属性,例如Core Graphics中的kCGImagePropertyGIFImageColorMapkCGImagePropertyGIFHasGlobalColorMap(引用).

我正在创建动画GIF,我想看看我是否可以通过播放大量的颜色来提高质量.我只发现了另一个代码示例,我不确定它是否有效.

我尝试使用上面链接的几个示例代码,但它似乎不起作用.设置kCGImagePropertyGIFHasGlobalColorMap似乎也没有做任何事情.谢谢

Cod*_*aFi 4

Core Graphics 不允许设置全局颜色表,只能为单图像 GIF 文件设置局部颜色表。多图像 gif 文件需要设置每个图像的单独属性,这意味着kCGImagePropertyGIFImageColorMap当源图像本身不是 GIF 文件时,这些属性将不起作用,并且链接要点中的代码是错误的。不要尝试设置全局颜色图,而是设置您尝试串在一起的每个图像的属性,这些属性可以通过使用图像上下文或在添加图像时设置图像的属性来使用 Core Graphics 进行操作到图像目的地参考。

如果您仍然对 GIF 颜色表感到好奇,giflib库对它们的解释比我更好,这可能是比 Core Graphics 生成 gif 和操作其颜色表更好的途径。如果您选择 Core Graphics 路线并且仍然想知道如何实例化颜色表,一般格式如下:

// Color tables are arrays of 8-bit bytes from 0 (deepest black) to 255 (brightest white)
// with each color's intensity grouped in 3's for a total of 9 values.
// The format is interpreted as hex values.
const uint8_t colorTable[9] = { 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF };
//                            {   White Bytes  }, {   Red Bytes  }, {   Blue Bytes  }
Run Code Online (Sandbox Code Playgroud)