我试图让我的应用程序导出动画 gif,但是,一旦颜色超过 256,量化算法就会启动,事情就会出错。
这是我正在转换的文件,以及算法将其转换为的内容:
我正在使用的量化算法是 Quantize.java,它显然是ImageMagick中使用的量化的 Java 端口,所以我觉得它应该是可靠的?
我这样使用它:
protected int[][] pixels; // 2D array of RGB pixels of image
protected byte[] indexedPixels;
// ...
/**
* Analyzes image colors and creates color map.
*/
protected void analyzePixels()
{
// Quantize the pixels, get reduced color map and indexed array.
// -------------------------------------------------------------
colorPalette = Quantize.quantizeImage(pixels, 256);
// Create indexed pixels array.
// ----------------------------
int i = 0;
for (int x = 0, xSize = pixels.length; x < xSize; ++x)
{
for (int y = 0, ySize = pixels[x].length; y < ySize; ++y)
indexedPixels[i++] = (byte) pixels[x][y];
}
}
注意- 这是我设置为时算法将其转换为的static final boolean QUICK
内容false
:
它看起来不同,但仍然不对。
我真的很想让这个算法工作,因为它速度快(呃)并且产生的文件比替代品(NeuQuant)更小。我做的一切都是正确的还是这就是算法的工作原理?