gpt4 book ai didi

python - RLE8图像支持/用Pillow解压(PIL fork)

转载 作者:行者123 更新时间:2023-12-01 08:59:00 28 4
gpt4 key购买 nike

我在 Python3 上使用 Pillow(版本 5.2.0)来打开 PNG 和 BMP 图像,并使用 Tkinter GUI 显示它们。 PNG 图像可以正确显示,没有任何问题,但是,当使用 Pillow 的 BmpImagePlugin.py 时,我遇到了一些 BMP 图像的 IOError(“不支持的 BMP 压缩”)。

使用位图插件的source和一些打印语句,我发现异常是在第193行抛出的,并且导致异常的图像是使用RLE8压缩的(用第63行的字典表示);所有其他格式都可以工作,因为它们是 RAW 格式。在我看来,如果该字典中列出了压缩类型,则应该支持它,但显然情况并非如此。

我的问题:有人知道 Pillow 或任何其他可以打开 RLE8 位图图像的 python 库的解决方法吗?这是显示我的 PATH 环境的图像,以及下面评论中描述的命令行错误。

Edit:

路径问题

2nd Edit

最佳答案

我注意到您的第一个图像 (test1.bmp) 似乎已损坏,并且 ImageMagick 报告其长度不正确。

您的第二个图像似乎没有使用 RLE8 压缩进行压缩,也是调色板图像,但具有 Alpha/透明度。

您的第三张图像是经过 RLE8 压缩的调色板、非 Alpha 图像。

我的 PIL 版本只能读取第二个文件 - 第一个和第三个文件是 RLE 编码的,无法读取。

<小时/>

您要求解决方法 - 我可以建议 pyvips可以毫无问题地读取文件:

import pyvips
from PIL import Image

# Load troublesome file using vips, and write to a memory buffer
image = pyvips.Image.new_from_file('test1.bmp')
mem_img = image.write_to_memory()

# Read from memory buffer into Numpy array
imgnp=np.frombuffer(mem_img, dtype=np.uint8).reshape(image.height, image.width, 3)
# Convert Numpy array to PIL Image and write to disk
Image.fromarray(imgnp).save('result.png')

关于python - RLE8图像支持/用Pillow解压(PIL fork),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52619276/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com