不能将RGBA模式写为JPEG

19 pillow python-3.6

我正在学习使用'枕头5.0'后面的书'用蟒蛇自动化无聊的东西'

有关图像对象的信息

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

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

In [83]: audacious.save('audacious.jpg')
OSError: cannot write mode RGBA as JPEG
Run Code Online (Sandbox Code Playgroud)

书中没有这样的错误.

Pat*_*ner 45

JPG不支持透明度 - RGBA手段Red,Green,Blue,Alpha- Alpha透明度.

你需要丢弃Alpha频道或保存为支持透明度的东西 - 比如PNG.

image-class有一个方法convert可以用来转换RGBARBG-之后,你就可以使用JPG.

看看这里:图像类doku

im = Image.open("audacious.png")
rgb_im = im.convert('RGB')
rgb_im.save('audacious.jpg')
Run Code Online (Sandbox Code Playgroud)

改编自:https://stackoverflow.com/a/43258974/7505395

  • 正如@timop [在这个答案中](/sf/answers/3447881461/)建议的那样,更有效的方法是在转换为 RGB 之前先检查其是否为 RGBA/P 格式:`if im.mode in ("RGBA", "P"): im = im.convert("RGB")` (5认同)
  • @Prahlad 如果你不知道你有 RGBA,那很好 - 这个问题首先使用 RGBA (2认同)