gpt4 book ai didi

java - 颜色量化给出非常糟糕的结果?

转载 作者:搜寻专家 更新时间:2023-11-01 03:50:45 25 4
gpt4 key购买 nike

我试图让我的应用程序导出动画 gif,但是,一旦颜色超过 256,量化算法就会启动,事情就会出错。

这是我要转换的文件,以及算法将其转换成什么:

enter image description here

我正在使用的量化算法 is this, 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 时算法将其转换为的内容:

enter image description here

看起来不一样,但还是不对。

我真的很想让这个算法工作,因为它比其他算法 (NeuQuant) 更快(呃)并且生成的文件更小。我做的每件事都是正确的还是这就是算法的工作原理?

最佳答案

您需要添加抖动算法..google 一下..我相信 Java 内置了一些算法,但来自维基百科的直接 Java 示例对我有用。因为我想处理原始字节数组和 int 数组以获得比仅使用 getPixel/setPixel 更高的效率

关于java - 颜色量化给出非常糟糕的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29310123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com