python:将base64编码的png图像转换为jpg

Posted

技术标签:

【中文标题】python:将base64编码的png图像转换为jpg【英文标题】:python: convert base64 encoded png image to jpg 【发布时间】:2011-10-21 10:14:13 【问题描述】:

我想使用 python 将一些 base64 编码的 png 图像转换为 jpg。我知道如何从 base64 解码回 raw:

import base64 
pngraw = base64.decodestring(png_b64text)

但是我现在如何将其转换为 jpg?只是将 pngraw 写入文件显然只会给我一个 png 文件。 我知道我可以使用 PIL,但我该怎么做呢?谢谢!

【问题讨论】:

请记住接受您的问题的答案。您只针对最后十个问题之一完成了此操作。 @memyself 在我的回答中添加了 PIL 的代码示例。 您知道您应用来弄清楚如何使用base64 模块的过程吗?为什么不把它也应用到PIL 【参考方案1】:

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

【讨论】:

我必须pip install Pillow才能import PIL ***.com/questions/20060096/installing-pil-with-pip【参考方案2】:

来自 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,它就会自动转换图像。

【讨论】:

以上是关于python:将base64编码的png图像转换为jpg的主要内容,如果未能解决你的问题,请参考以下文章

将base64中的字符串转换为图像并保存在文件系统中

base64编码图像作为参数post访问远程服务

用base64编码图像有啥效果?

Python 对图像进行base64编码及解码读取为numpyopencvmatplot需要的格式

如何将 base64 字符串格式的图像转换为清晰图像缩小器期望的数据类型?

如何使用 javascript 获取 base64 编码图像的地址