起因
之前一直用xlsxwriter生成excel文件时,插入图片总会出现忽大忽小,插入参数只有位置和缩放参数,没有长宽的属性。结合网上解决方法,使用如下方法即刻解决
解决方案
from io import BytesIO
try:
from urllib.request import urlopen
except ImportError:
from urllib2 import urlopen
from PIL import Image
from xlsxwriter.workbook import Workbook
filename = '/script/test.xlsx'
office = Workbook(filename)
cell_height = 140.0
worksheet = office.add_worksheet()
image_data = BytesIO(urlopen(image_url).read())
im = Image.open(image_data)
print im.size
original_width, original_height = im.size
width = cell_height * original_width / original_height
im.thumbnail((width, cell_height), Image.ANTIALIAS)
print im.size
im_bytes = BytesIO()
im.save(im_bytes, format='JPEG')
worksheet.insert_image(1, 1, p.avatar, {'image_data': im_bytes})
office.close()