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
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