本文实例为大家分享了python实现批量按比例缩放图片的具体代码,供大家参考,具体内容如下
把脚本文件放在要缩放的文件夹下面。
双击运行脚本,输入要缩放的系数。脚本会在当前目录下创建一个scaledImg_xxxx文件夹,如果已经存在,会强制删除,如果删除失败会提示手动删除这个文件夹,再双击运行就可以了。
resizeImg.py
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
46
47
48
49
|
#!/usr/bin/python # -*- coding:utf8 -*- #author@skillart www. import os import shutil import Image to_scale = 0.5 processIndex = 0 def resizeImg(imgPath): global processIndex fileList = [] files = os.listdir(imgPath) for f in files: filePath = imgPath + os.sep + f if (os.path.isfile(filePath)): fileList.append(f) elif (os.path.isdir(filePath)): resizeImg(filePath) for fileName in fileList: processIndex + = 1 fileFullName = imgPath + os.sep + fileName suffix = fileName[fileName.rfind( '.' ):] if (suffix = = '.png' or suffix = = '.jpg' ): print 'processing the ' + str (processIndex) + 'th file:' + fileFullName img = Image. open (fileFullName) w,h = img.size tw = int (w * to_scale) th = int (h * to_scale) reImg = img.resize((tw,th),Image.ANTIALIAS) reImg.save(fileFullName) del reImg if __name__ = = '__main__' : scaleStr = raw_input ( 'input to_scale: ' ) to_scale = float (scaleStr) scaledPath = '.\\scaledImg_xxxx' ; if os.path.isdir(scaledPath): flag = raw_input ( 'the output dir is exist, sure to del it(y/n)' ) if flag = = 'y' or flag = = 'yes' : try : shutil.rmtree(scaledPath) finally : raw_input ( 'remove dir failed , please removed the dir manually.' ) else : exit shutil.copytree( '.\\' ,scaledPath) resizeImg(scaledPath) raw_input ( "resize success" ) |
生成Icon
generateIcon.py
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
46
47
48
49
50
51
52
53
|
#!/usr/bin/python # -*- coding:utf8 -*- #author@skillart www. import os import shutil import Image def resizeImg(imgPathName): print imgPathName iconDict = { 'Icon.png' : '72x72' , 'Icon@2x.png' : '144x144' , 'Icon-29.png' : '29x29' , 'Icon-40.png' : '40x40' , 'Icon-50.png' : '50x50' , 'Icon-57.png' : '57x57' , 'Icon-58.png' : '58x58' , 'Icon-72.png' : '72x72' , 'Icon-76.png' : '76x76' , 'Icon-80.png' : '80x80' , 'Icon-100.png' : '100x100' , 'Icon-114.png' : '114x114' , 'Icon-120.png' : '120x120' , 'Icon-144.png' : '144x144' , 'Icon-152.png' : '152x152' , 'FlipCycleTileLarge.png' : '300x300' , 'FlipCycleTileMedium.png' : '300x300' , 'FlipCycleTileSmall.png' : '300x300' , 'IconicTileMediumLarge.png' : '300x300' , 'IconicTileSmall.png' : '300x300' , 'ApplicationIcon.png' : '300x300' , 'icon.png' : '72x72' } if os.path.isfile(imgPathName) = = False : print ( 'open imgPathName failed , check the' + imgPathName + "is exist!" ) exit img = Image. open (imgPathName) index = imgPathName.rfind(os.sep) prefix = imgPathName[:index + 1 ] for key, value in iconDict.items(): # print key,value v_split = value.split( 'x' ) w,h = int (v_split[ 0 ]), int (v_split[ 1 ]) fileName = prefix + key reImg = img.resize((w,h),Image.ANTIALIAS) reImg.save(fileName) print fileName,w,h del img if __name__ = = '__main__' : scaledPath = '.\\createIcon' if os.path.isdir(scaledPath): flag = raw_input ( 'the output dir is exist, sure to del it(y/n)' ) if flag = = 'y' or flag = = 'yes' : try : shutil.rmtree(scaledPath) finally : raw_input ( 'remove dir failed , please removed the dir manually.' ) else : exit shutil.copytree( '.\\' ,scaledPath) fileList = [] files = os.listdir(scaledPath) for f in files: filePath = scaledPath + os.sep + f if os.path.isfile(filePath) : suffix = filePath[filePath.rfind( '.' ):] if (suffix = = '.png' or suffix = = '.jpg' ): print filePath resizeImg(filePath) break raw_input ( "resize success" ) |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/skillart/article/details/50536929