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

双击运行脚本,输入要缩放的系数。脚本会在当前目录下创建一个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")



Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐