python:使用 PIL 将文件从 PNG 转换为 JPG 而无需将文件保存到磁盘
python: Convert from PNG to JPG without saving file to disk using PIL
在我的程序中,我需要将 .png
文件转换为 .jpg
文件,但我不想将文件保存到磁盘。
目前我使用
>>> from PIL import Imag
>>> ima=Image.open("img.png")
>>> ima.save("ima.jpg")
但这会将文件保存到磁盘。我不想将其保存到磁盘,而是将其转换为 .jpg
作为对象。我该怎么做?
您可以使用 io:
中的 BytesIO 来做您正在尝试的事情
from io import BytesIO
def convertToJpeg(im):
with BytesIO() as f:
im.save(f, format='JPEG')
return f.getvalue()
改进 Ivaylo 的回答:
from PIL import Image
from io import BytesIO
ima=Image.open("img.png")
with BytesIO() as f:
ima.save(f, format='JPEG')
f.seek(0)
ima_jpg = Image.open(f)
这样,ima_jpg 就是一个 Image 对象。
要在 with
语句之外的@tuxmanification 方法中使用 ima_jpg
对象,请使用 Image.load()
:
from PIL import Image
from io import BytesIO
ima=Image.open("img.png")
with BytesIO() as f:
ima.save(f, format='JPEG')
f.seek(0)
ima_jpg = Image.open(f)
ima_jpg.load()
在我的程序中,我需要将 .png
文件转换为 .jpg
文件,但我不想将文件保存到磁盘。
目前我使用
>>> from PIL import Imag
>>> ima=Image.open("img.png")
>>> ima.save("ima.jpg")
但这会将文件保存到磁盘。我不想将其保存到磁盘,而是将其转换为 .jpg
作为对象。我该怎么做?
您可以使用 io:
中的 BytesIO 来做您正在尝试的事情from io import BytesIO
def convertToJpeg(im):
with BytesIO() as f:
im.save(f, format='JPEG')
return f.getvalue()
改进 Ivaylo 的回答:
from PIL import Image
from io import BytesIO
ima=Image.open("img.png")
with BytesIO() as f:
ima.save(f, format='JPEG')
f.seek(0)
ima_jpg = Image.open(f)
这样,ima_jpg 就是一个 Image 对象。
要在 with
语句之外的@tuxmanification 方法中使用 ima_jpg
对象,请使用 Image.load()
:
from PIL import Image
from io import BytesIO
ima=Image.open("img.png")
with BytesIO() as f:
ima.save(f, format='JPEG')
f.seek(0)
ima_jpg = Image.open(f)
ima_jpg.load()