图片格式转换

碰上这样一个情景:

我从网络上下载了一张表情包图片,存放在 MyImages 文件夹下,文件类型为 .wepg ,为了能够在QQ上顺利发送,我需要将它转换为常用的 .jpg.jpeg 格式。
如图:

解决:

  • MyImages 目录下创建名为 convert.py 的Python文件,开始代码编写

    代码思路:

    • 获取当前目录的文件名列表
    • 开始遍历列表元素
    • 尝试读取图片,如果遇到 IOError (说明不是可读取的图片类型,略过这一文件) ,否则继续执行
    • 如果图片已经是 .jpg.jpeg 后缀,则不处理
    • 将图片以 jpeg 格式保存在当前目录
    • 将原图片移动到 ./SourceImage 文件夹下(如果此文件夹不存在则新建)

完整代码

 1#!python3
2
3import os
4from PIL import Image
5
6#获取文件名列表
7imgList = os.listdir("./")
8
9##函数:获取文件的后缀长度(例如 jpg 和 jpeg 的长度分别为 3 和 4 )
10#def typeNameLengthCount(name):
11#  count = 0
12#  for i in range(1, len(name)):
13#      if(name[-i] == '.'):
14#          break
15#      else:
16#          count += 1
17#  return count
18#修改:上面这是原来的代码,后来想起os库有现成的分离文件名和后缀名的函数,于是此自定义函数弃用
19
20#检查 ./SourceImage 目录是否存在,不存在则创建它
21if (not (os.path.exists("./SourceImage"))):
22    os.mkdir("./SourceImage")
23
24#开始遍历文件
25for name in imgList:
26    try:
27        img = Image.open(name) #尝试打开图片,如果不是可以打开的类型,则忽略(因为需要忽略代码文件本身及后面创建的SourceImage文件夹)
28
29        #type_length = typeNameLengthCount(name)
30        #file_type = name[-type_length:] #得到后缀的长度
31        #修改:用库方法替代自定义方法:
32        file_name, file_type = os.path.splitext(name)
33
34        if file_type == 'jpg' or file_type == 'jpeg'#如果已经是 .jpg 或 .jpeg 类型,则跳过
35            continue
36        else:
37
38            #img.save("%s.jpg"%(name[0:(-type_length-1)]), 'jpeg')
39            #修改:改用下面这行代码:
40            img.save("%s.jpg"%(file_name), 'jpeg')
41
42            os.rename(name, "./SourceImage/%s"%name) #移动原图片,此处用shutil.move( , ) 方法同样可行, 而且这个方法可以实现文件在磁盘间的移动
43    except IOError:
44        print("one file was ignored")

运行它

  • 运行前

  • 运行时

  • 运行后

  • 原图片将保留

搞定

以后再下载保存的文件就运行一下这个代码就好了 []~( ̄▽ ̄)~*

欢迎留言补充。

此为旧文,图片水印为我的CSDN账号,无妨

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注