[code]python转换url对应的图片为base64

功能步骤:

  1. 通过url获取图片
  2. 缩放图片
  3. 图片数据放入内存buffer
  4. 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 ""

你可能感兴趣的:([code]python转换url对应的图片为base64)