我正在尝试让我的应用程序导出动画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)生成的文件更小。我是否做对了所有事情,或者这只是算法的工作原理?
我最终放弃了Quantize.java,找到了Java Imaging Utilities(http://sourceforge.net/projects/jiu/),它提供了一些不错的颜色/图像量化选项。它们不是完美的结果,但是可以忍受。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句