2006年10月09日 星期一 19:28
×Ô¼ºÐ´µÄ£¬ºÃÏñÒ²ÓÐÐÖµÜÐèÒª£¬´úÂëºÜ³ó¡£²îµÄºÜ£¬´ó¼ÒÅúÆÀ¡£
ÒÔÏ´úÂëµ¥¶ÀΪһ¸öÎļþ£¬ÓëdjangoÅäºÏ£¬Éú³ÉËõÂÔͼ¡£
#coding=utf-8
import Image
import os
import StringIO
from APPSname.settings import DEFAULT_IMAGE
def cropimage(image,width,height):
    x = width - height
    if x>0:
        t = x/2
        image = image.crop((t,0,height+t,height))
    if x<0:
        t = abs(x)/2
        image = image.crop((0,t,width,width+t))
    return image
def pastetuple(width,height,arg):
    w , h = 0 , 0
    if width < arg:
        w = (arg - width)/2
    if height < arg:
        h = (arg - height)/2
    tu = (w,h)
    return tu
def thumbnail(content,arg):
    size = (arg,arg)
    im = StringIO.StringIO(content)
    image = Image.open(im)
    image = image.convert('RGB')
    width,height = image.size
    if width > arg or height > arg:
        image = cropimage(image,width,height)
    image.thumbnail(size,Image.ANTIALIAS)
    width,height = image.size
    if width < arg or height < arg:
        tu = pastetuple(width,height,arg)
        bg = Image.open(DEFAULT_IMAGE)
        bg.paste(image,tu)
        image = bg
    buf = StringIO.StringIO()
    image.save(buf, "JPEG")
    return buf.getvalue()
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20061009/67430629/attachment.html 
2006年10月09日 星期一 19:59
谢谢风兄的分享,稍加改造了一下,分享如下:
from PIL import Image
import os.path
def cropimage(image,width,height):
    x = width - height
    if x>0:
        t = x/2
        image = image.crop((t,0,height+t,height))
    if x<0:
        t = abs(x)/2
        image = image.crop((0,t,width,width+t))
    return image
def thumbnail(filename, size=(48,48), thumbnail_filename=None):
    image = Image.open(filename)
    image = image.convert('RGB')
    width,height = image.size
    if width > size[0] or height >size[1]:
        image = cropimage(image,width,height)
    image.thumbnail(size, Image.ANTIALIAS)
    if not thumbnail_filename:
        thumbnail_filename = get_default_thumbnail_filename(filename)
    #image.resize((size),
Image.ANTIALIAS).save(file(thumbnail_filename, 'wb'), "JPEG")
    image.save(file(thumbnail_filename, 'wb'), "JPEG")
    return thumbnail_filename
def get_default_thumbnail_filename(filename):
    path, ext = os.path.splitext(filename)
    return path + ext
Zeuux © 2025
京ICP备05028076号