压缩PIL图像而不保存文件

问题描述 投票:0回答:2

我在 python 中压缩图像而不将图像保存在磁盘上时遇到问题。该图像具有保存功能,如此处所述。这里它通过保存来优化图像。是否可以使用相同的过程而不保存图像。我想像另一个 python 函数那样做。

image=image.quantize() [这里大大降低了质量]

提前致谢:)

python python-imaging-library image-compression
2个回答
0
投票

在 PIL 或 opencv 中,图像只是一个带有像素值的大矩阵。如果您想对图像执行某些操作(例如显示它),该函数需要知道所有像素值,因此需要提取的图像。

但是,有一种方法可以将图像压缩在内存中,直到您真正需要对图像执行某些操作为止。看看这个答案:如何在 Python 中加载图像,但保持压缩?


0
投票

简单!无需将文件保存在文件系统上,只需将其保存在内存中即可。

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
© www.soinside.com 2019 - 2024. All rights reserved.