六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 47|回复: 0

mac下图片批量处理

[复制链接]

升级  14%

19

主题

19

主题

19

主题

秀才

Rank: 2

积分
71
 楼主| 发表于 2013-1-15 02:13:36 | 显示全部楼层 |阅读模式
转自
https://github.com/zhasm/scripts/raw/master/resize.py


#!/usr/bin/python# -*- coding: utf-8 -*-##author:         rex#blog:           http://iregex.org#filename        resize.py#created:        2011-01-05 21:35import refrom sys import exitfrom optparse import OptionParserfrom os.path import abspathfrom os.path import dirname as dirnamefrom os.path import join as pathjointry:    import Imageexcept:    print "Please install PIL module for python before using this script"    exit(1)def getPath(sufix=""):    '''get absolute path of the current dir'''    path = dirname(__file__)    try:        index=path.index("..")        if index!=-1:            path=path[:index]    except:        pass    return pathjoin(abspath(path), sufix).replace('\\','/')def getOptions():    '''get and parse options '''    usage = "usage: %prog [options] FILE1 [ FILE2 ...]"    parser=OptionParser(usage=usage)    parser.add_option("-r", "--resolution", dest="resolution", help="the destination resolution in 1024x768 format. You may use Non-digital chars to separate width and height, but do not use space as delimiter")    parser.add_option("-p", "--percent", dest="percent", help="the destination resolution in 90 format, where 90 stands for 90% percent. Please do not add the '%' sign.")    parser.add_option("-d", "--destination", dest="destination", help="the path to save the result. if omitted, the current folder will be used.")    (options, args) = parser.parse_args()    if not ( options.resolution or options.percent):        print parser.parse_args( [ '--help' ] )        exit(1)    if not args:        print "Please Specify Picture files to resize!"        print parser.parse_args( [ '--help' ] )        exit(1)    if not (options.destination):        options.destination=getPath()    return{        'files': args,        'option': options,    }def resize(files, resolutionString="", percent=None, output="./"):    '''resize all files with given opts'''    size=[]    if resolutionString:        size=re.findall(r"\d+", resolutionString)        size=[int(i) for i in size]        if not size:            print "Seems the resolution argument is not correct."            exit(1)    elif percent:        percent=int(percent)        if not percent:            print "Seems the percent argument is not correct."            exit(1)    all=len(files)    index=0    for file in files:        try:            im=Image.open(file)            try:                filename=re.findall(r"[^/]+$", file)[0]            except:                print 'Error occured when try to get the real filename'                continue            outputfilename=pathjoin(abspath(output), "r_"+filename).replace('\\','/')            if percent and not size:                size=[int(i * percent / 100) for i in im.size ]            result=im.resize(size, Image.ANTIALIAS)            result.save(outputfilename)            index+=1            print "[%d of %d] %s has been resized." % (index, all, file)        except:            print "Error occured when resizing %s" % fileif __name__=="__main__":    args=getOptions()    files=args['files']    option=args['option']    resize(files, resolutionString=option.resolution,            percent=option.percent,            output=option.destination)
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表