OSError: cannot write mode RGBA as JPEG

做项目进行图像预处理时,出现: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')
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值