我正在使用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);
            }


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

我无法得到FreeImageAPI.FreeImageBitmap.Quantize()来制作具有有限调色板的类似PNG,例如la PIL convert(),您可以在其中指定算法和调色板大小。

谢谢。

最佳答案

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

10-05 23:52