python: преобразование изображения PNG в кодировке base64 в jpg
Я хочу преобразовать некоторые закодированные base64 png-изображения в jpg с помощью python. Я знаю, как декодировать из base64 обратно в raw:
import base64
pngraw = base64.decodestring(png_b64text)
но как я могу преобразовать это сейчас в JPG? Просто запись pngraw в файл, очевидно, дает мне только png-файл. Я знаю, что могу использовать PIL, но как именно я это сделаю? спасибо!
2 ответов
можно использовать PIL:
data = b'''iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAIBJRE
FUOMvN08ENgCAMheG/TGniEo7iEiZuqTeiUkoLHORK++Ul8ODPZ92XS2ZiADITmwI+sWHwi
w2BGtYN1jCAZF1GMYDkGfJix3ZK8g57sJywteTFClBbjmAq+ESiGIBEX9nCqgl7sfyxIykt
7NUUD9rCiupZqAdTu6yhXgzgBtNFSXQ1+FPTAAAAAElFTkSuQmCC'''
import base64
from PIL import Image
from io import BytesIO
im = Image.open(BytesIO(base64.b64decode(data)))
im.save('accept.jpg', 'JPEG')
в очень старых версиях Python (2.5 и старше) замените b'''
С '''
и from io import BytesIO
С from StringIO import StringIO
.
прямо из учебника PIL:
чтобы сохранить файл, используйте метод save класса Image. При сохранении файлов, имя становится важным. Если формат не указан, библиотека использует расширение имени файла для определения формата хранения файлов.
конвертировать файлы в JPEG
import os, sys
import Image
for infile in sys.argv[1:]:
f, e = os.path.splitext(infile)
outfile = f + ".jpg"
if infile != outfile:
try:
Image.open(infile).save(outfile)
except IOError:
print "cannot convert", infile
поэтому все, что вам нужно сделать, это установить расширение для .jpeg
или .jpg
и он автоматически преобразует изображения.