用 PIL 写了个简单的缩略图生成程序

来源:互联网 发布:java帝国时代 编辑:程序博客网 时间:2024/04/30 15:04
最近刚刚学了简单的 PIL(Python Image Library) 的使用方法,感觉比较简单好用!结合最近我要在 web 中做缩略图的需求,写了个函数。这个程序的思路是截取源图中间一块正方形区域,然后做缩放生成缩略图。


啥也不说了,上代码:

#!/usr/bin/env python
#coding=utf-8

importImage
importos

defmake_thumb(path,sizes=(75,32,16)):
    """
    
缩略图生成程序 by Neil Chen
    sizes
参数传递要生成的尺寸,可以生成多种尺寸
    """
   
    
base,ext=os.path.splitext(path)
    try:
        im=Image.open(path)
    exceptIOError:
        return
    mode=im.mode
    ifmodenotin('L','RGB'):
        ifmode=='RGBA':
            #透明图片需要加白色底
            alpha=im.split()[3]
            bgmask=alpha.point(lambdax:255-x)
            im=im.convert('RGB')
            # paste(color, box, mask)
            im.paste((255,255,255),None,bgmask)
        else:
            im=im.convert('RGB')
            
    
width,height=im.size
    ifwidth==height:
        region=im
    else:
        ifwidth>height:
            delta=(width-height)/2
            box=(delta,0,delta+height,height)
        else:
            delta=(height-width)/2
            box=(0,delta,width,delta+width)           
        
region=im.crop(box)
            
    
forsizeinsizes:
        filename=base+"_"+"%sx%s"%(str(size),str(size))+".jpg"
        thumb=region.resize((size,size),Image.ANTIALIAS)
        thumb.save(filename,quality=100)#默认 JPEG 保存质量是 75,不太清楚。可选值(0~100)

if__name__=='__main__':    
    
make_thumb(r"c:/testimg/test.jpg")
    make_thumb(r"c:/testimg/test2.jpg")
    make_thumb(r"c:/testimg/a.jpg")
    make_thumb(r"c:/testimg/DSCF0111.jpg")
    make_thumb(r"c:/testimg/test3.jpg")


效果:


引自:http://www.cnblogs.com/RChen/archive/2007/03/31/pil_thumb.html

 


原创粉丝点击