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

http://www.cnblogs.com/rchen/archive/2007/03/31/pil_thumb.html

 

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

def make_thumb ( path, sizes=( 75 , 32 , 16
)):
    
"""
    缩略图生成程序 by Neil Chen
    sizes 参数传递要生成的尺寸,可以生成多种尺寸
    """
   
    
base, ext = os. path. splitext( path
)
     try
:
         im = Image. open( path
)
     except IOError
:
        
return
     mode = im. mode
     if mode not in ( 'L' , 'RGB'
):
         if mode == 'RGBA'
:
            
# 透明图片需要加白色底
             alpha = im. split()[ 3
]
             bgmask = alpha. point( lambda x: 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
     if width == height
:
         region = im
     else
:
         if width > 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
)
            
    
for size in sizes
:
         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" )



效 果:
test6.JPG

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值