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))