• 1.1k

PIL除了save()之外还有其他可转换图片格式的API吗?

需要把一个jpg格式的文件转成png,然后上传,源文件来自网络。
目前我知道的:

pythonfrom PIL import Image

with open('a.jpg', 'w') as w:
    w.write(data)
orin = Image.open('a.jpg')
orin.save('a.png')

显然需要耗费多余的两次磁盘IO,有没有更好的转换方法呢?

阅读 5.8k
评论
    1 个回答
    • 24.9k

    你用的是 Python 啊啊啊,给 PIL「file-like objects」就行,谁说一定要是位于磁盘上的文件了?

    python>>> data = open('b.png', 'rb').read()
    >>> from PIL import Image
    >>> import io
    >>> ifile = io.BytesIO(data)
    >>> im = Image.open(ifile)
    >>> ofile = io.BytesIO()
    >>> im.save(ofile, 'JPEG')
    >>> converted_data = ofile.getvalue()
    

    完全不用磁盘,把位于 data 中的 PNG 数据转成 converted_data 中的 JPEG 数据。

      撰写回答

      登录后参与交流、获取后续更新提醒

      相似问题
      推荐文章