'posterizing'一张图片的效果是什么?

What is the effect of 'posterizing' an image?

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

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

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

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

来自 ImageMagick command line documentation:

-posterize levels

reduce the image to a limited number of color levels per channel.

Very low values of levels, e.g., 2, 3, 4, have the most visible effect.

Color Quantization examples 中有更多信息 - 它还有一些示例图片:

The operators original purpose (using an argument of '2') is to re-color images using just 8 basic colors, as if the image was generated using a simple and cheap poster printing method using just the basic colors. Thus the operator gets its name.

...

An argument of '3' will map image colors based on a colormap of 27 colors, including mid-tone colors. While an argument of '4' will generate a 64 color colortable, and '5' generates a 125 color colormap.

从本质上讲,它减少了图像中使用的颜色数量 - 并进一步缩小了尺寸。使用 136 的级别不会有太大的可见影响,因为这转化为 2,515,456 种颜色的着色表 (136^3)。

commit 中还值得注意的是,对于您链接的问题,这甚至并不总是减小图像大小的有效方法:

... it turns out that posterization only improves file sizes for PNGs and can actually lead to slightly larger file sizes for JPG images.

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

如果反过来,你开始引入后处理,后来发现不知何故不受欢迎,你将无法再取回原始信息。

所以,我认为停止海报化没有坏处。事实上,我已经写了这些,有点挑战任何知道更好的人说出来并告诉我我错了:-)