Plone技术资料

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 5181|回复: 1

批量处理图片脚本赏析

[复制链接]
发表于 2011-9-25 20:27:07 | 显示全部楼层 |阅读模式
该脚本是本人为了应对经常的图片处理而写,主要功能如下:
  • 文件夹嵌套,批量处理所有图片类型
  • 制定图片规格,并自动生产大小两种图片
  • 可以制定生成的图片存放的目标文件夹
#version 2.0
# updated by Adam on 2005-10-31
#version 1.0
# updated by Adam on 2005-9-29
import Image
import os
#import glob
import math,string
from os.path import *
def AdjustPics(maxsize,Picname):
    global imtype
    try:        
        im=Image.open(Picname)
        imtype=im.format
        xsize,ysize=im.size
        if xsize > ysize:
            tempsize=xsize
            bito=math.floor(maxsize)/tempsize
            im2=im.resize((maxsize,ysize * bito))            
        else:
            tempsize=ysize
            bito=math.floor(maxsize)/tempsize
            im2=im.resize((xsize * bito,maxsize))        
        return im2
    except:
        print Picname      
def processFiles(SFilepath,DFilepath):   
    global root,dirs,files
    import re
    s1=len(SourcePath)
    for root, dirs, files in os.walk(SFilepath):
        if len(files)!=0:                                    
            for name in files:           
                if name=="Thumbs.db" :
                    continue
                #fetch the file path info
                suffix=name.split('.')[-1]
                pic=os.path.join(root, name)            
                temp=pic[s1+1:]
                ts=string.split(temp,'.')
                temp1=ts[0]
                # replace more than one spaces using '_' in filename
                temp2=re.sub('\s+|-+','_',temp1)
                # add filename suffix
                temp3=temp2 + r'.' + suffix
                temp_s=temp2 + r'_s.' + suffix
                #group the full destination path of file
                Dpic=os.path.join(DestPath, temp3)
                Dpic_s=os.path.join(DestPath, temp_s)
                if os.path.isdir(DFilepath):
                    pass
                else:
                    os.makedirs(DFilepath)               
                try:
                    AdjustPics(maxsize,pic).save(Dpic,imtype)     # store the big photo
                    AdjustPics(maxsize/2,pic).save(Dpic_s,imtype) #store the small photo
                except:
                    continue            
        if len(dirs)!=0:
            #obey the source directory tree to build destination directory tree
            for dr in dirs:               
                SFilepath=os.path.join(root, dr)               
                temp=SFilepath[s1+1:]                           
                DFilepath=os.path.join(DestPath, temp)
                if os.path.isdir(DFilepath):
                    pass
                else:
                    os.makedirs(DFilepath)
if __name__ == '__main__':
    SourcePath=r'D:\pconline\prog\test'
    DestPath=r'D:\pconline\prog\test5'
    maxsize=180
    os.chdir(SourcePath)   
    SFilepath=SourcePath
    DFilepath=DestPath      
    processFiles(SFilepath,DFilepath)     


   


回复

使用道具 举报

发表于 2011-12-15 12:24:11 | 显示全部楼层
这个不错,我也写过一个PYQT的,改天传上来
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|Plone技术资料 ( 湘ICP备14006519号-1 )

GMT+8, 2019-11-21 06:37 , Processed in 0.044224 second(s), 14 queries , Gzip On.

Powered by Plone! X3.4

© 2001-2019 Plone.org.

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