首页 > 编程 > Python > 正文

python实现批量按比例缩放图片效果

2020-01-04 15:28:34
字体:
来源:转载
供稿:网友

本文实例为大家分享了python实现批量按比例缩放图片的具体代码,供大家参考,具体内容如下

脚本文件放在要缩放的文件夹下面。

双击运行脚本,输入要缩放的系数。脚本会在当前目录下创建一个scaledImg_xxxx文件夹,如果已经存在,会强制删除,如果删除失败会提示手动删除这个文件夹,再双击运行就可以了。

resizeImg.py

#!/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

#!/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") 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VEVB武林网。


注:相关教程知识阅读请移步到python教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表