Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用FreeImage库(C#)减少PNG-8调色板中的颜色计数_C#_Image_Freeimage_Png 8 - Fatal编程技术网

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

使用FreeImage库(C#)减少PNG-8调色板中的颜色计数,c#,image,freeimage,png-8,C#,Image,Freeimage,Png 8,我使用FreeImageNET库将我的位图量化为 using (FreeImageAPI.FreeImageBitmap fiBitmap = FreeImageAPI.FreeImageBitmap.FromHbitmap(bmp.GetHbitmap())) { if (fiBitmap.ColorDepth > 24) { fiBitmap.ConvertC

我使用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会在剩余(更高)索引中填充灰色级别

我无法使用
freemageapi.freemagebitmap.Quantize()
制作类似的PNG,但调色板有限,可以指定算法和调色板大小的la PIL
convert()


谢谢。

最后通过使用互联网上的开源代码重新实现了量化。

啊,也许你不能,但我希望在你的答案中看到一些源代码或更多细节,因为我自己也在做同样的事情。我也是。还有,你决定采用哪种算法?有段时间没有检查,我选择了八叉树量化,代码在这里可用