我使用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,它具有有限的调色板,是一个可以同时指定算法和调色板大小的la PIL convert()。
谢谢。
发布于 2012-04-09 14:33:36
最后通过使用因特网上的开源代码重新实现量化。
https://stackoverflow.com/questions/9231771
复制相似问题