本文实例为大家分享了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