是否有任何方法可以使用Python通过LZMA压缩图像。预先存在的包可以压缩文本文件,但我找不到任何方法来压缩图像。任何帮助都很棒!
谢谢!
lzma
文档提供了以下编写压缩文件的示例
import lzma
data = b"Insert Data Here"
with lzma.open("file.xz", "w") as f:
f.write(data)
注意数据是字节(b-prefix(,因此您可以在二进制模式下读取任何文件,并将其"内容"用作data
,例如,如果您有名为image.png
的文件,则可以执行
import lzma
with open("image.png", "rb") as f:
data = f.read()
with lzma.open("image.png.xz", "w") as f:
f.write(data)
预先存在的包适用于bytes
类型,它可以表示任何二进制数据,而不仅仅是文本。你只需要有你的图像的格式。如果您的图像已经存储在文件系统中,这应该会起作用:
import lzma
with open('myimage.jpg', 'rb') as f: # read bytes mode
image_bytes = f.read()
compressor = lzma.LZMACompressor()
compressed_bytes = compressor.compress(image_bytes)
compressed_bytes += compressor.flush()
with open('myimage.jpg.lzma', 'wb') as f:
f.write(compressed_bytes)
当然有,首先使用opencv读取img=cv2.imread((的图片,然后img值无论如何都会变成一个numpy列表,然后将这个numpy列表转换为python列表,您可以将列表保存在db或任何位置作为文本。