Python: 将base64编码的PNG图像转换为JPG

10 投票
2 回答
12319 浏览
提问于 2025-04-16 23:01

我想用Python把一些用base64编码的png图片转换成jpg格式。我知道怎么把base64解码成原始数据:

import base64 
pngraw = base64.decodestring(png_b64text)

但是我现在怎么把这个转换成jpg呢?直接把png的原始数据写入文件显然只会得到一个png文件。我知道可以用PIL库,但具体该怎么做呢?谢谢!

2 个回答

4

来自PIL教程的内容:

要保存一个文件,可以使用Image类的save方法。在保存文件时,文件名就变得很重要了。除非你指定格式,否则这个库会根据文件名的后缀来判断使用哪种文件存储格式。

将文件转换为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,它就会自动把图片转换成这种格式。

21

你可以使用 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

撰写回答