1

我目前正在处理使用 iMagick 转换图像时在特定主机上看到 CPU 使用率问题的问题。这个问题在这里得到了非常完美的描述: https ://github.com/ResponsiveImagesCG/wp-tevko-responsive-images/issues/150 (我不使用那个特定的库,但我确实使用了他们所做的相同的响应图像类,并且我在该特定行上超时,仅适用于某些图像)。

他们似乎建议删除对的调用->posterizeImage()将解决他们的问题,并且在我的测试中确实如此,我什至无法分辨转换后的图像有任何区别。但这让我担心,因为我想知道是否存在我没​​有看到的差异,或者仅在某些情况下出现的差异(我的意思是,如果对图像进行后处理没有做任何事情,那么就没有方法了,对吧?)。我在网上看到它“将图像减少到有限数量的颜色级别”(在这种情况下,136 个级别对我来说是个问题,因为它的价值)。不过,我在解析时遇到了一些困难,我认为这与对各种图像格式存储数据的方式掌握不佳有关(实际上,它并没有超越图像被分解成像素的想法,像素被分解成红绿蓝的比例)。

如果我们停止对图像进行分色处理,我会看到哪些实际的视觉差异?这是我只希望在某些类型的图像中出现的东西(比如,它在透明而不是非透明或暖色图像中会更明显)吗?或者这在某些显示样式中会更明显(例如打印,或者 iPhone 显示器中的暖色温)?

基本上,我正在寻找信息,以便就评论是否安全做出明智的选择。我不担心这是否意味着某些图像可能会大 x Kb,但如果它会使它们看起来质量很差,或者以某种方式扭曲它们(即使在极端情况下),那么我需要考虑其他选项。

4

2 回答 2

2

从 ImageMagick命令行文档

-posterize 水平

将图像减少到每个通道的有限数量的颜色级别。

非常低的级别值,例如 2、3、4,具有最明显的效果。

颜色量化示例中有更多信息- 它也有一些示例图像:

操作员最初的目的(使用参数“2”)是仅使用 8 种基本颜色重新着色图像,就好像图像是使用仅使用基本颜色的简单且廉价的海报打印方法生成的一样。因此运营商得名。

...

'3' 的参数将基于 27 种颜色的颜色图映射图像颜色,包括中间色调颜色。而参数“4”将生成一个 64 色颜色表,而“5”则生成一个 125 色颜色图。

从本质上讲,它减少了图像中使用的颜色数量 - 并扩展了尺寸。使用 136 的级别不会产生太多明显的影响,因为这会转换为 2,515,456 色表 (136^3)。

从您链接的问题的提交中还值得注意的是,这甚至不是减小图像大小的有效方法:

...事实证明,分色只会提高 PNG 的文件大小,实际上可能会导致 JPG 图像的文件大小稍大。

于 2016-03-10T05:54:15.387 回答
2

分色是减少存储在图像中的颜色信息量 - 因此,它实际上是质量下降。很难想象停止这样做会有多大的危害。而且,如果后来发现这样做是有正当理由的,那么您以后总是可以这样做,因为如果您现在停止这样做,您仍然会拥有所有原始信息。

如果反过来,你开始引入posterisation,后来发现由于某种原因它是不可取的,你将无法再取回原始信息。

所以,我认为停止后处理没有什么坏处。事实上,我写了这个,有点挑战任何知道更好的人说出来告诉我我错了:-)

于 2016-03-10T09:16:47.907 回答