无法将模式 RGBA 写入 JPEG

Posted

技术标签:

【中文标题】无法将模式 RGBA 写入 JPEG【英文标题】:cannot write mode RGBA as 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 的情况下遇到了这个问题,所以否则不会找到它。 【参考方案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 开头

以上是关于无法将模式 RGBA 写入 JPEG的主要内容,如果未能解决你的问题,请参考以下文章

对 JPG 图像进行操作时出现“无法将模式 P 写入 JPEG”

在 iOS 上从两个 jpeg 加载 RGBA 图像 - OpenGL ES 2.0

Leptonica - 应用 otsu 阈值后无法写入图像

Python pillow模块出现cannot write mode RGBA as JPEG问题的解决方法

Imagick 无法将 PDF 转换为 JPEG,但 ImageMagick 可以

6747寄存器无法写入值~~求助