png没法直接图像识别,需要转jpg,否则会报错“cannot write mode RGBA as JPEG”。
png是以RGBA(red,green,blue,alpha)存储,最后的alpha是透明度,往往一转图片体积就小很多,因为jpg是rgb格式,不支持alpha。
代码如下:
from PIL import Image def IsValidImage(img_path): """ 判断文件是否为有效(完整)的图片 :param img_path:图片路径 :return:True:有效 False:无效 """ bValid = True try: Image.open(img_path).verify() except: bValid = False return bValid def transimg(img_path): """ 转换图片格式 :param img_path:图片路径 :return: True:成功 False:失败 """ if IsValidImage(img_path): try: str = img_path.rsplit(".", 1) output_img_path = str[0] + ".jpg" print(output_img_path) im = Image.open(img_path) rgb_im = im.convert('RGB') rgb_im.save(output_img_path) return True except: return False else: return False if __name__ == '__main__': img_path = r'C: est.png' print(transimg(img_path))