图像转换png->jpg

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:\test.png'
    print(transimg(img_path))

  

 

posted @ 2020-03-28 10:24  谷子弟  阅读(298)  评论(0编辑  收藏  举报