2015-08-05 5 views
11

Я пытаюсь манипулировать кодированным base64 образом таким образом, чтобы вращать его под углом 90 градусов. После этой манипуляции я хочу преобразовать ее в строку base64. Но, к сожалению, этого пока не удалось.Как преобразовать объект PIL Image.image в строку base64?

Вот что я сделал до сих пор:

image_string = StringIO(base64.b64decode(base64_string_here)) 
image = Image.open(image_string) 
angle = 90 
rotated_image = image.rotate(angle, expand=1) 

Kindy помочь мне, как преобразовать этот rotated_image в base64 строку.

вот реж() из rotated_image:

[ '_Image__transformer', '__doc__', '__getattr__', '__init__', '__module__', '__repr__', '_copy', '_dump', ' _expand ',' _makeself ',' _new ',' category ',' convert ',' copy ',' crop ',' draft ',' filter ',' format ',' format_description ',' fromstring ',' getbands ' «getbbox», «getcolors», «getdata», getextrema, getim, getpalette, getpixel, getprojection, histogram, im, info, load, mode ',' offset ',' palette ',' paste ',' point ',' putalpha ',' putdata ',' putpalette ',' putpixel ',' quantize ',' readonly ',' resize ',' rotate ' , 'save', 'seek', 'show', 'size', 'split', 'tell', 'thumbnail', 'tobitmap', 'tostring', 'transform', 'transpose', 'verify']

ответ

32

Python 3

import base64 
from io import BytesIO 

buffered = BytesIO() 
image.save(buffered, format="JPEG") 
img_str = base64.b64encode(buffered.getvalue()) 

Python 2

import base64 
import cStringIO 

buffer = cStringIO.StringIO() 
image.save(buffer, format="JPEG") 
img_str = base64.b64encode(buffer.getvalue()) 
+17

Я хотел бы сказать, что в python3.4 вы должны написать 'Ио импорта BytesIO' и' буфер = BytesIO() '. Также имейте в виду, что 'buffer' уже является существующим встроенным именем (возможно, используется' buffered'). [Прекрасные документы] (https://docs.python.org/3/library/io.html#binary-i-o). – Paolo

Смежные вопросы