gpt4 book ai didi

c# - 使用 FreeImage 库 (C#) 减少 PNG-8 调色板中的颜色计数

转载 作者:太空宇宙 更新时间:2023-11-03 14:06:14 27 4
gpt4 key购买 nike

我使用 FreeImageNET 库将我的位图量化为

using (FreeImageAPI.FreeImageBitmap fiBitmap = FreeImageAPI.FreeImageBitmap.FromHbitmap(bmp.GetHbitmap()))
{
if (fiBitmap.ColorDepth > 24)
{
fiBitmap.ConvertColorDepth(FreeImageAPI.FREE_IMAGE_COLOR_DEPTH.FICD_08_BPP);
}

//quantize using the NeuQuant neural-net quantization algorithm
fiBitmap.Quantize(FreeImageAPI.FREE_IMAGE_QUANTIZE.FIQ_NNQUANT, 256);


fiBitmap.Save("test_z.png", FreeImageAPI.FREE_IMAGE_FORMAT.FIF_PNG, FreeImageAPI.FREE_IMAGE_SAVE_FLAGS.PNG_Z_BEST_COMPRESSION);

//fiBitmap.Save(ms, FreeImageAPI.FREE_IMAGE_FORMAT.FIF_PNG, FreeImageAPI.FREE_IMAGE_SAVE_FLAGS.PNG_Z_DEFAULT_COMPRESSION);
}

这给了我一个 PNG-8,带有 256 种颜色的调色板。使用 Photoshop 我发现,如果我使用自适应算法和减少的调色板(例如 128、64、16 等),我可以进一步减小尺寸。再次重新打开它会显示 Photoshop 会在那些剩余的(较高的)索引中填充灰度级。

我无法让 FreeImageAPI.FreeImageBitmap.Quantize() 生成类似的 PNG,但调色板有限,a la PIL convert() 您可以在其中指定算法和调色板大小。

谢谢。

最佳答案

最终使用来自 Internet 的开源代码重新实现了量化。

关于c# - 使用 FreeImage 库 (C#) 减少 PNG-8 调色板中的颜色计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9231771/

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