mem*_*elf 8 python png jpeg image
我想使用python将一些base64编码的png图像转换为jpg.我知道如何从base64解码回原始:
import base64
pngraw = base64.decodestring(png_b64text)
Run Code Online (Sandbox Code Playgroud)
但是我现在如何将其转换为jpg?只是将pngraw写入文件显然只给我一个png文件.我知道我可以使用PIL,但我该如何做呢?谢谢!
phi*_*hag 19
你可以使用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')
Run Code Online (Sandbox Code Playgroud)
在很老的Python版本(2.5及以上),更换b'''用'''和from io import BytesIO用from StringIO import StringIO.
从PIL教程开始:
要保存文件,请使用Image类的save方法.保存文件时,名称变得很重要.除非您指定格式,否则库使用文件扩展名来发现要使用的文件存储格式.
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
Run Code Online (Sandbox Code Playgroud)
因此,您所要做的就是将文件扩展名设置为.jpeg或.jpg,它将自动转换图像.