我在 python 中压缩图像而不将图像保存在磁盘上时遇到问题。该图像具有保存功能,如此处所述。这里它通过保存来优化图像。是否可以使用相同的过程而不保存图像。我想像另一个 python 函数那样做。
image=image.quantize() [这里大大降低了质量]
提前致谢:)
在 PIL 或 opencv 中,图像只是一个带有像素值的大矩阵。如果您想对图像执行某些操作(例如显示它),该函数需要知道所有像素值,因此需要提取的图像。
但是,有一种方法可以将图像压缩在内存中,直到您真正需要对图像执行某些操作为止。看看这个答案:如何在 Python 中加载图像,但保持压缩?
简单!无需将文件保存在文件系统上,只需将其保存在内存中即可。
from PIL import Image
import io
def compressed_image(image: Image) -> Image:
"""
Compresses the given image.
:return: A compressed copy of the image
"""
buffered = io.BytesIO()
image.save(buffered, format="PNG", optimize=True)
return Image.open(buffered)
这不会过多降低图像质量。为了保持更多的质量,您可以尝试其他选项并查看输出图像的大小;
subsampling=0, quality=100