功能步骤:
通过url获取图片
缩放图片
图片数据放入内存buffer
buffer数据转化为base64编码
特点:
没有磁盘的存储步骤,图片的处理均在内存中。
优势:
没有磁盘的io,所以速度相对较快。
代码:
# coding=utf-8
import urllib2
import cStringIO
from PIL import Image
import base64
def get_img_base64_from_url(url, max_length=800):
"""
从互联网获取图片,并限定宽度最大为max_width,最后转换为base64
url:互联网上的图片url
max_length:图片缩放的最大宽度。大于该长度的图片将会被缩放。
"""
try:
origin_file = cStringIO.StringIO(urllib2.urlopen(url).read())
img = Image.open(origin_file)
w, h = img.size
larger_side = max(w, h)
if larger_side > max_length:
img = img.resize((int(float(max_length) * w / larger_side),
int(float(max_length) * h / larger_side)), Image.ANTIALIAS)
jpeg_image_buffer = cStringIO.StringIO()
img.save(jpeg_image_buffer, format="JPEG")
base64_str = base64.b64encode(jpeg_image_buffer.getvalue())
return base64_str
except Exception, e:
return ""