2017-05-28 47 views
1

压缩图像字节表示我怎样才能得到同样的效果:获取内存

from PIL import Image 
with Image.open(image_path) as image: 
    image.thumbnail((200, 200), Image.ANTIALIAS) 
    image.save(temporary_thumbnail_path) 
with open(temporary_thumbnail_path, "rb") as thumbnail_file: 
    thumbnail_as_string = base64.b64encode(thumbnail_file.read()).decode() 

,而不必写入磁盘?

即我想获得压缩的图像的字节表示,但不必诉诸于temporary_thumbnail_path。 我知道PIL文档建议使用

save(),带有用于内存数据的BytesIO参数。

但我不确定明白这是什么意思,并没有在网上找到例子。

回答

1

也没那么难:

import io 
from PIL import Image 

output = io.BytesIO() 
with Image.open(image_path) as image: 
    image.thumbnail((400, 400), Image.ANTIALIAS) 
    image.save(output, format="JPEG") 
    thumbnail_as_string = base64.b64encode(output.getvalue()).decode()