Python实现小工具:批量将任意格式图片转为 JPG 格式

Serepta ·
更新时间:2024-11-13
· 669 次阅读

1、需求分析

  写博客的时候发现这样一个问题:自己在 Mac 上截的图都是高清的 PNG 格式图片,最小的也超过 1MB。直接放在博客里,既占用服务器存储空间,又导致博客加载出来很慢,体验不好。而且写博客时上传也慢。而 JPG 格式的图片,虽然比起 PNG 色彩会有点失真,也没有透明效果,但清晰度还可以,而且大小小了几个数量级。所以打算以后发博都插入 JPG 格式的图片。为了提高效率,自己用 Python 写了一个批量将任意格式图片(Pillow 支持的格式)转成 JPG 格式的图片。

2、项目设计

  代码如下:

#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Thu May  7 22:39:34 2020 @author: Mekakuactor """ from PIL import Image import os 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(path):     """     转换图片格式     :param img_path:图片路径     :return: True:成功 False:失败     """     for filename in os.listdir(path):         img_path = path + '/' + filename         if IsValidImage(img_path):             try:                 str = img_path.rsplit(".")                 if str[-1] == 'jpg' or str[-1] == 'jpeg' or str[-1] == 'JPG' or str[-1] == 'JPEG':                     pass                 else:                     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)             except:                 print("error1:", img_path)         else:             print("error2:", img_path) if __name__ == '__main__':     path = 'work'     print(transimg(path))

  工作文件夹按如下设置,要转换图片放在 “work” 文件夹中:

  运行 “toJPG.py” 即可,程序会自动跳过所有已经是 JPG 或 JEPG 格式的文件和非图片的文件。

  拿出一张转换前和转换后的图片做对比,发现仅仅是图像色彩有些失真,但清晰度丝毫未影响,很适合作为博客展示图片(为了更好突出效果,这张展示图片未做格式转换)。再看看它们的大小,原来为 6.8MB 的 PNG 图片,转成了 263 KB 的 JPG 图片,足足缩小了30倍。可见这种转换性价比极高。

  顺便一提,以上博客图片中除了倒数第二张为了展示转换效果而保持 PNG 格式外,其他图片均是由该工具转换成的 JPG 格式。可见该工具非常实用。

3、未来展望

  在本地每次写博客都得转换实在过于麻烦,将来找个时间研究一下 Django 的 admin 的富文本编辑器,直接在上传图片时进行自动转换,就能省很多事。

Happy! 花見に行こう 原创文章 7获赞 3访问量 259 关注 私信 展开阅读全文
作者:花見に行こう



图片 工具 jpg Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号