49

我正在尝试修改几个 GIF 属性,例如Core Graphics 中的kCGImagePropertyGIFImageColorMapkCGImagePropertyGIFHasGlobalColorMap参考)。

我正在创建动画 GIF,我想看看是否可以通过使用颜色数量来提高质量。我只找到了另一个代码示例,我不确定它是否有效。

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

4

1 回答 1

4

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  }
于 2013-10-03T23:57:46.107 回答