需要了解ImageMagick/Graphicsmagick-颜色选项的帮助吗

需要了解ImageMagick/Graphicsmagick-颜色选项的帮助吗,image,image-processing,image-manipulation,imagemagick,graphicsmagick,Image,Image Processing,Image Manipulation,Imagemagick,Graphicsmagick,我试图通过编程减少PNG和GIF文件的大小(有损)。作为其中的一部分,我需要减少图像中的颜色数量。我不想把所有的图像减少到一个单一的颜色值,所以我要做的是;获取图像中唯一颜色的数量,然后;将此数字除以2可将颜色数减半 问题是这不起作用。使用ImageMagic速度太慢,并且不会减小文件大小,除非图像具有几百种独特的颜色。无论原始图像中有多少种颜色,使用GraphicsMagick始终会导致唯一的颜色值小于255。GraphicsMagick的另一个问题是,如果图像中有任何透明像素,它将用透明替换

我试图通过编程减少PNG和GIF文件的大小(有损)。作为其中的一部分,我需要减少图像中的颜色数量。我不想把所有的图像减少到一个单一的颜色值,所以我要做的是;获取图像中唯一颜色的数量,然后;将此数字除以2可将颜色数减半

问题是这不起作用。使用ImageMagic速度太慢,并且不会减小文件大小,除非图像具有几百种独特的颜色。无论原始图像中有多少种颜色,使用GraphicsMagick始终会导致唯一的颜色值小于255。GraphicsMagick的另一个问题是,如果图像中有任何透明像素,它将用透明替换丢失的颜色

我们非常欢迎任何帮助,
谢谢。

只有在以下情况下,减少颜色数量才有用

  • 然后,图像可以使用调色板,而不是存储每个像素的颜色
  • 调色板索引的大小小于颜色的大小
  • 图像格式支持调色板大小
  • 我认为这些格式只能得到1位、4位、8位、2色、16色或256色。我想如果你要求更多,你只会被截断到256。如果你要求更少,它就不会使用整个调色板

    您是否考虑过转换为JPEG并使用质量设置?您最终可以对损耗进行更精细的控制。缺点是,如果图像不是照片,但听起来它们有很多颜色,所以它们可能是


    如果接近您想要的,可以选择1、4、8位,如果有很多颜色,可以选择jpeg。

    我认为您想要的ImageMagick功能可能是量化:


    第一个问题,GraphicsMagick可以使用8位、16位或32位量子级别编译。我的版本被编译成8位(默认值),这意味着可以分配给图像的最大颜色数是256种唯一颜色(3*3*2,1个蓝色位被删除,因为人眼无法正确地看到它)。显然,GraphicsMagick可以处理比这更多颜色的图像,但当减少颜色时,它只能减少到256或更少颜色。像素数量越大,GraphicsMagick运行速度越慢,需要更多内存。例如,使用16位像素量程会导致GraphicsMagick的运行速度比构建为支持8位像素量程时慢15%到50%(占用的内存是它的两倍)


    第二个问题;PNG图像中的透明度处理,我使用的是GraphicsMagick的早期版本(我想是1.1),无论如何,当我升级到1.3时,这个问题不再存在,这告诉我是GraphicsMagick 1.1中的一个错误导致了这个问题。

    嗨,谢谢你的回复,这就是我的想法,但ImageMagick允许您出于某种原因指定一个不受限制的颜色值。我需要图像保持相同的格式,而且JPEG会导致图像失去透明度。你知道我面临的通用汽车透明度问题吗?再次感谢您的时间。它只是GIF格式的吗?在GIF中,有一个调色板条目被指定为透明颜色——也许它们的颜色匹配是意外地将丢失的颜色映射到它。这可能会发生,因为实际上有一种颜色被指定为透明颜色(它不是alpha为0的颜色)。听起来有点像虫子。如果您在Windows上,请试用我们免费的.NET图像SDK。不,它只适用于PNG文件。我正在使用Linux,但无法将.NET用于此项目。感谢您的帮助。PNG中完全透明的颜色仍然是Alpha设置为0的颜色。我怀疑他们的颜色匹配没有考虑阿尔法。是的,我认为透明的颜色被选为图像中的主色。似乎没有任何选择可以阻止这一切。不幸的是,我还没有找到很多对GraphicsMagick有全面了解的人,所以很难解决这样的问题。谢谢你,但我已经阅读了所有可用的文档。我现在的主要问题是阻止GraphicsMagick用透明像素替换不透明像素。这不会发生在ImageMagick中,我在GraphicsMagick中阻止它的唯一方法是将颜色空间设置为透明;问题是这会增加文件的大小。在操作后展平图像以去除透明度可以解决这个问题吗?对不起,我不明白。我想保持图像的透明度。