python 下载远程图片并生成缩略图

#coding=utf-8
from PIL import Image
import os
import os.path
import StringIO
import re
import datetime
import urllib
def thumbnail(filename, size=(50, 50), output_filename=None):
    image = Image.open(filename)
    if image.mode not in ('L', 'RGB'):
        image = image.convert('RGB')
    image = image.resize(size)
    # get the thumbnail data in memory.
    if not output_filename:
        output_filename = get_default_thumbnail_filename(filename)
    image.save(output_filename, image.format) 
    return output_filename
def thumbnail_string(buf, size=(50, 50)):
    f = StringIO.StringIO(buf)
    image = Image.open(f)
    if image.mode not in ('L', 'RGB'):
        image = image.convert('RGB')
    image = image.resize(size, Image.ANTIALIAS)
    o = StringIO.StringIO()
    image.save(o, "JPEG")
    return o.getvalue()
    
def get_default_thumbnail_filename(filename):
    path, ext = os.path.splitext(filename)
    return path + '.thumb.jpg'
def download_image(url):
    path = os.path.join('c:/', '',url.split('/')[-1])
    urllib.urlretrieve(url, path)
    return path
    
def get_image_url(content, user_id='1', directory='blog'):
    """
    if article's content has imgs,return first img's src
    if not has, give us null
    """
    
    pattern = 'src="?(.+?.)(gif|jpg|gif|jpg|bmp|png)'
    #pattern = '</?(IMG|img)[^<>]*/?>'
    
    lists = []
    lists = re.findall(pattern, content)
    thum_name = ''
    print lists
    for l in lists:
        try:
            original_path = '%s%s' % (l[0],l[1])
            
            #生成缩略图名称,路径
            thum_name = '%s.%s' % (datetime.datetime.now().strftime("%Y%m%d%H%M%S"), l[1])
            thum_dir = '%s/%s/small/' % (user_id, directory)
            thum_path = os.path.join('e:/', thum_dir + thum_name)
            print thum_path
            
            try:
                os.makedirs(os.path.join('e:/', thum_dir))
            except:
                pass
            
            if l[0].startswith('http://'):#处理远程图片
                
                #temp_path = os.path.join(global_settings.MEDIA_ROOT, original_path.split('/')[-1])
                temp_path = os.path.join('c:/', original_path.split('/')[-1])
                            
                #下载过程图片
                urllib.urlretrieve(original_path, temp_path)
               
                #生成缩略图
                thumbnail(temp_path, (60,60), thum_path)
                os.remove(temp_path)
                
            else:#处理本地上传图片
                original_dir = re.sub('/upload_media/', '', original_path) 
                print original_dir
                original_path = os.path.join('e:/', original_dir)
                print original_path
                
                #生成缩略图
                #thumbnail(original_path, (60,60), thum_path)
           
        except:
            pass
            
            
get_image_url("""<p><img id="lg" height="129" src="http://www.baidu.com/img/baidu_logo.gif" width="270" usemap= /><img height="0" width="0" alt="" src="/upload_media/13/blog/image/right.gif" /></p><br />""")

你可能感兴趣的:(python)