Core Graphics 不允许设置全局颜色表,只允许设置单图像 GIF 文件的局部颜色表。多图像 gif 文件需要设置每个图像的单独属性,这意味着kCGImagePropertyGIFImageColorMap
当源图像本身不是 GIF 文件时将不起作用,并且链接 gist中的代码是错误的。与其尝试设置全局颜色映射,不如设置您尝试串连在一起的每个图像的属性,这可以通过使用图像上下文或通过在添加图像时设置图像的属性来使用 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 }