明凯博客

关注网站技术,一个特立独行的程序员

【python案例】批量修改目录内的图片尺寸

假如我们有个目录内的图片有几十张,想把这些图片放到iphone5中做桌面,但是原来的图片分辨率太大,现在需要将这些图片分辨率改成我们需要的尺寸。

这种方案主要有两步需要注意的。

第一步,查找文件。

查找目录内的文件,然后批量去修改尺寸。
这里我们提供了两种简单的方法去查找文件。

第一种,用walk。

1
2
3
4
5
6
7
    # 第一种方法:用walk方法
    for root, dirs, files in os.walk(picdir):
        for name in files:
            # 拼接文件
            filename = os.path.join(root, name)
            print filename
            change_picsize(filename)

第二种方法,用listdir。

1
2
3
4
5
6
    # 第二种方法:用listdir方法
     for name in os.listdir(picdir):
         # 拼接文件
         filename = os.path.join(picdir, name)
         print filename
         change_picsize(filename)

第二步,修改尺寸。

修改尺寸的方法就比较简单了,首页得到原图片的宽和高,然后判断宽和高单独修改尺寸就可以了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/python
# -*- coding: utf-8 -*-
from PIL import Image
import os
 
#iPhone 5显示屏分辨率
i5size = (1136, 640)
 
# 获取文件夹里面所有的文件
def change_size(picdir):
    # 第一种方法:用walk方法
    for root, dirs, files in os.walk(picdir):
        for name in files:
            # 拼接文件
            filename = os.path.join(root, name)
            print filename
            change_picsize(filename)
    # 第二种方法:用listdir方法
    # for name in os.listdir(picdir):
    #     # 拼接文件
    #     filename = os.path.join(picdir, name)
    #     print filename
    #     change_picsize(filename)
 
# 修改图片尺寸            
def change_picsize(filename):
    im = Image.open(filename)
    # 获取图片宽和高
    w = im.width;
    h = im.height;
    # 图片宽大于尺寸缩放
    if(w > i5size[0]):
        im = im.resize((i5size[0], h))
    else:
        pass
    # 图片高大于尺寸缩放
    if(h > i5size[1]):
        im = im.resize((im.width, i5size[1]))
    else:
        pass
    # 保存图片
    im.save(filename.split('.')[0] + '_2.'+filename.split('.')[1])
 
if __name__ == '__main__':
    change_size('source')

最后看看我们目录内的图片尺寸。

2

, , ,

相关文章

发表回复

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