我正在处理一个问题,我们在使用iMagick转换图像时在特定主机上看到CPU使用率问题。这里的问题非常完美: https://github.com/ResponsiveImagesCG/wp-tevko-responsive-images/issues/150(我没有使用那个特定的库,但是我使用他们所做的相同的响应式图像类,并且我在该特定行上超时,仅针对某些图像)。
他们似乎建议删除对->posterizeImage()
的调用将解决他们的问题,而在我的测试中,我甚至无法分辨转换后的图像。但是这让我很担心,因为我想知道是否存在我没有看到的差异,或者只是在某些情况下出现的差异(我的意思是如果将图像分色并没有做任何事情那就不会有它的方法,对吧?)。我在网上看到它“将图像缩小到有限数量的色彩级别”(在这种情况下会导致问题的136个级别,因为它的价值)。我在解析时遇到了一些困难,我认为这与对各种图像格式存储数据的方式的把握不太有关(实际上它没有超越图像被分解为像素的想法,这些像素被分解比例为红绿和蓝。)
如果我们停止分色图像,我可以期待看到哪些实际的视觉差异?这是我在某些类型的图像中所期望的东西(例如,在透明的非透明或更暖的彩色图像中它会更明显吗?)或者在某些显示样式(如打印,或iPhone显示器中较温暖的色温)中更明显?
基本上我正在寻找信息,以便明确选择是否可以安全地发表评论。我不担心这是否意味着某些图像可能会大于x Kb,但如果它会使它们看起来质量很差,或者以某种方式扭曲它们(即使在角落情况下),那么我需要考虑其他选项。
答案 0 :(得分:2)
来自ImageMagick command line documentation:
-posterize levels
将图像缩小为每个通道的有限数量的色彩级别。
非常低的等级值(例如2,3,4)具有最明显的效果。
Color Quantization examples还有更多信息 - 它还有一些示例图片:
操作员的原始目的(使用'2'的参数)是仅使用8种基本颜色重新着色图像,就像使用仅使用基本颜色的简单且廉价的海报打印方法生成图像一样。因此,运营商得名。
...
参数'3'将根据27种颜色的色彩图(包括中色调颜色)映射图像颜色。虽然参数'4'将产生64色的colortable,而'5'产生125色的色图。
基本上它减少了图像中使用的颜色数量 - 并且通过扩展来减小尺寸。使用136的水平不会有太多明显的影响,因为这可以转化为2,515,456种颜色(136 ^ 3)。
值得注意的是commit对于您所关联的问题,这甚至不是减少图像尺寸的有效方法:
...事实证明,分色只会改善文件大小 对于PNG而言,实际上可以导致更大的文件大小 JPG图片。
答案 1 :(得分:2)
海报化是减少图像中存储的颜色信息量 - 因此,它实际上是质量下降。很难想象如何停止这样做可能是有害的。并且,如果事后证明存在/是合理的理由,您可以随时执行此操作,因为如果您现在停止执行此操作,您仍将获得所有原始信息。
如果是相反的方式,并且你开始引入海报,后来发现它出于某种原因是不受欢迎的,那么你将无法再获得原始信息。
所以,我认为停止宣传没有害处。事实上,我已经写过这样的事情,那些挑战的人会更好地说出来并告诉我我错了: - )