做项目进行图像预处理时,出现:OSError: cannot write mode RGBA as JPEG
原因:RGBA意思是红色,绿色,蓝色,Alpha的色彩空间,Alpha指透明度。而JPG不支持透明度,所以要么丢弃Alpha,要么保存为.png文件。
丢弃Alpha
#coding=utf-8
import os #打开文件时需要
from PIL import Image
class convert2RGB():
def __init__(self,path):
#图片文件夹路径
self.path = path
def convert(self):
filelist = os.listdir(self.path)
for item in filelist:
if item.endswith('.jpg') or item.endswith('.png'):
print(item)
file = self.path + '/' + item
im = Image.open(file)
length = len(im.split())
if length == 4:
r, g, b, a = im.split()
# im = img.convert('RGB')
im = Image.merge("RGB", (r, g, b))
os.remove(file)
im.save(file[:-4] +".jpg")
if __name__ == '__main__':
# 定义自己的路径
imgPath = 'D:/imgs'
demo = convert2RGB(imgPath)
demo.convert()
保存为png
img.save('imgnew.png')