Esempio n. 1
0
def get_thumbnail_image(filename, size='normal', autoSave = True):
    source_image_name = filename
    thumbnail_image_name = get_thumbnail_image_name(filename,size)
    thumbnail_size = get_thumbnail_image_size(size)
    thumbnail_crop = get_thumbnail_image_crop(size)
    # 检查缩略图是否存在 
    storage = get_storage()
    thumbs_storage = get_thumbs_storage()

    exists = thumbs_storage.exists(thumbnail_image_name)
    if exists:
        #print "storage exists file~~",thumbnail_image_name
        return thumbnail_image_name

    try:
        exists = storage.exists(source_image_name)
        if not exists:
            print "storage not exists source file >_< ",source_image_name
            return thumbnail_image_name
        source_file = storage.open(filename)
        # 实例PIl对象
        im = Image.open(source_file.file)

        format = Image.EXTENSION.get(thumbnail_image_name, 'PNG')
        if im.info.has_key("duration") and 0:
            # 动态gif图
            original_duration = im.info['duration']
            #frames = [frame.copy() for i, frame in enumerate(iter_frames(im))]    
            #frames = [scale_and_crop(frame, thumbnail_size) for i, frame in enumerate(iter_frames(im))]  
            frames = []
            for i, frame in enumerate(iter_frames(im)):
                frame = colorspace(frame)
                frame = autocrop(frame)
                frame = scale_and_crop(frame, thumbnail_size)
                frames.append(frame)
            #frames.reverse()
            i=0
            for frame in frames:
                i+=1
                #frame.thumbnail((72,72))
            output = StringIO()
            img_data = images2gif.writeGif(output, frames, duration=original_duration/1000.0, dither=0)
            thumbnail_file = thumbs_storage.save(thumbnail_image_name,img_data)
        else:
            im = colorspace(im)
            im = autocrop(im)
            im = scale_and_crop(im, thumbnail_size, thumbnail_crop)
            output = StringIO()
            im.save(output, format)

            is_transparent = is_transparent_image(im)
            if is_transparent:
                img_data = output.getvalue()
            else:
                img_data = im.tostring('jpeg', 'RGB')
            output.close()
            thumbnail_file = thumbs_storage.save(thumbnail_image_name,img_data)

    except Exception, e:
        raise
Esempio n. 2
0
def get_thumbnail_image_attr(filename):
    attr = {}
    print filename
    print "##############"
    storage = get_thumbs_storage()
    exists = storage.exists(filename)
    if exists:
        try:
            source_file = storage.open(filename)
            # 实例PIl对象
            im = Image.open(source_file.file)
            width,height = im.size
            attr = {'width':width,'height':height}
        except Exception, e:
            pass