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格式