【问题标题】:cannot write mode RGBA as JPEG无法将模式 RGBA 写入 JPEG
【发布时间】:2018-06-23 05:21:13
【问题描述】:

我正在学习使用 'pillow 5.0' 之后的书'用 python 自动化无聊的东西'

图像对象的信息

In [79]: audacious = auda
In [80]: print(audacious.format, audacious.size, audacious.mode)
PNG (1094, 960) RGBA

当我尝试转换文件类型时,它报告错误。

In [83]: audacious.save('audacious.jpg')
OSError: cannot write mode RGBA as JPEG

没有这样的 书中有错误。

【问题讨论】:

  • 被骗的答案不是 100% 的骗子,但会帮助您解决问题 - 我的回答是您收到此错误的原因
  • 我支持这个。这个问题专门指如何解决该异常。我在没有使用 PNG 的情况下遇到了这个问题,所以否则不会找到它。

标签: python-3.6 pillow


【解决方案1】:

JPG 不支持透明度 - RGBA 表示 RedGreenBlueAlpha - Alpha透明度 .

您需要丢弃 Alpha 频道或另存为支持透明度的内容 - 例如 PNG

Image 类有一个方法convert,可用于将RGBA 转换为RGB - 之后您将能够保存为JPG

看看这里:the image class doku

im = Image.open("audacious.png")
rgb_im = im.convert('RGB')
rgb_im.save('audacious.jpg')

改编自 dm2013 对Convert png to jpeg using Pillow的回答

【讨论】:

  • 正如@timop 建议的in this answer,更有效的方法是在转换为RGB 之前先检查其是否为RGBA/P 格式:if im.mode in ("RGBA", "P"): im = im.convert("RGB")
  • @Prahlad 如果你不知道你有 RGBA 很好 - 这个问题使用 RGBA 开头
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-19
  • 2019-03-01
  • 2014-03-07
  • 2018-08-16
  • 2013-02-07
相关资源
最近更新 更多