python pillow OSError: cannot write mode RGBA as JPEG

python pillow OSError: cannot write mode RGBA as JPEG

前言

一、保存失败原因

二、改换成保存前转换格式

成功

前言

Traceback (most recent call last):

File “G:\od15\venv\lib\site-packages\PIL\ JpegImagePlugin.py ”, line 610, in _save

rawmode = RAWMODE[im.mode]

KeyError: ‘RGBA’

The above exception was the direct cause of the following exception:

OSError: cannot write mode RGBA as JPEG


一、保存失败原因

在运行过程中,出现错误

OSError: cannot write mode RGBA as JPEG

原因:我的图像文件中有png格式的。

查资料发现是PNG有RGBA四个通道,而JPG是RGB三个通道,所以PNG转BMP时候程序不知道A通道怎么办,就会产生错误。

解决方法就是检查通道数,舍弃A通道。解决在代码中加入


# 打开图片

my_image = Image.open (fp+'\\'+fileName)

r, g, b, a = my_image.split()

my_image = Image.merge("RGB", (r, g, b))


结果:


r, g, b, a = my_image.split()

ValueError: not enough values to unpack (expected 4, got 3)


二、改换成保存前转换格式

成功

代码如下(示例):

import os
from PIL import Image

# 打开图片

my_image = Image.open (fp+'\\'+fileName)

# r, g, b, a = my_image.split()

# my_image = Image.merge("RGB", (r, g, b))


# 设置尺寸 width, height =160, 200

# 调整尺寸

my_image = my_image.resize((w, h),Image.ANTIALIAS)

my_image = my_image.convert('RGB')

# 保存图片

my_image.save('ppic\\'+fnpy+".jpg")

```



# 总结

RGBA意思是红色,绿色,蓝色,Alpha的色彩空间,Alpha指透明度。而JPG不支持透明度,所以要么丢弃Alpha,要么保存为.png文件,解决两种方法:要么保存png,要么先.convert('RGB')再保存为jpg.

后辍都为.jpg有可能也有RGBA格式

发布于 2023-01-02 16:29 ・IP 属地河南