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

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

以上是 python实现批量按比例缩放图片效果 的全部内容, 来源链接: utcz.com/z/337287.html

回到顶部