【问题标题】:Using Python to resize images using Pillow, why are the colours changing?使用 Python 使用 Pillow 调整图像大小,为什么颜色会发生变化?
【发布时间】:2015-05-30 00:16:25
【问题描述】:

我在使用 Image.resize() 时遇到了一些奇怪的事情。我有两张图片,一张是另一张的裁剪版本。我一直在计算纵横比,以便可以按相同的因子调整两个图像的大小,然后分别调整它们的大小。

现在,由于某种原因,两张图片中较大的一张调整得很好,但裁剪后的版本有一些颜色失真。几乎看起来图像已经稍微饱和了。

以前有没有人经历过这种情况或知道为什么会发生这种情况?

感谢阅读。

【问题讨论】:

  • 图片在调整大小时会改变格式吗? (例如从 png 到 gif)?您能否发布代码的相关部分以及可能的 MWE?

标签: python image pillow


【解决方案1】:

我们真的需要看代码。

没有代码,很难确切知道,但我经常在 PIL 中看到由类型转换引起的此类颜色问题。一些python图像假设数字将在[0.0 - 1.0]之间浮动,而另一些则假设它们将是[0, 255]中的整数,等等。

我建议你玩一下这样的类型转换,看看是否会发生什么有趣的事情:

image = image.astype(uint8)

image = image.astype(float32)

image = uint8(image)

image = float32(image)

【讨论】:

    【解决方案2】:

    我没有用过 Pillow,也没有看到你的图片或代码,但是假设你有一张分辨率为 400x200 的图片,并且你想将其调整为 200x100,那么每个新像素都需要有一些颜色。由于新图像较小,因此必须将原始图像的颜色混合在一起以形成新颜色。因此,在这种情况下,它在每个维度上缩小两倍,每个像素的颜色将是原始像素的四个像素的平均值。类似地,如果你调整到更大的图像,取决于如何完成,新的像素可能是块状的(比如当你放大到任何像素图像时)或平滑,这意味着它们是来自像素的一些插值。原图。

    【讨论】:

      【解决方案3】:

      可能是 Pillow/PIL(和大多数其他图像库)在调整大小/重新采样时不知道色彩空间或伽玛值。

      这是一个与 Pillow 相关的问题: SRGB-aware image resize in Pillow

      这是对http://www.ericbrasseur.org/gamma.html的更一般的解释

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-05
        • 1970-01-01
        • 1970-01-01
        • 2020-03-14
        • 2012-06-13
        • 2016-04-13
        相关资源
        最近更新 更多