Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带枕头的RLE8图像支持/解压缩(PIL-fork)_Python_Bitmap_Python Imaging Library_Vips - Fatal编程技术网

Python 带枕头的RLE8图像支持/解压缩(PIL-fork)

Python 带枕头的RLE8图像支持/解压缩(PIL-fork),python,bitmap,python-imaging-library,vips,Python,Bitmap,Python Imaging Library,Vips,我在Python3上使用枕头(版本5.2.0)打开PNG和BMP图像,并用Tkinter GUI显示它们。PNG图像显示正确,没有任何问题,但是,当使用Pillow的BmpImagePlugin.py时,我遇到了一些BMP图像的IOError(“不支持的BMP压缩”) 使用位图插件和一些打印语句,我发现异常在第193行抛出,导致异常的图像使用RLE8压缩(由第63行的字典表示);所有其他的工作,因为他们是一个原始格式。 在我看来,如果某个压缩类型在该字典中列出,它应该得到支持,但显然不是这样 我

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

使用位图插件和一些打印语句,我发现异常在第193行抛出,导致异常的图像使用RLE8压缩(由第63行的字典表示);所有其他的工作,因为他们是一个原始格式。 在我看来,如果某个压缩类型在该字典中列出,它应该得到支持,但显然不是这样

我的问题:是否有人知道枕头中的解决方法或任何其他可以打开RLE8位图图像的python库? 这是一张显示我的路径环境的图像,以及下面注释中描述的命令行错误

路径问题


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

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

您的第三个图像是托盘化的,非alpha,带有RLE8压缩

我的PIL版本只能读取第二个文件——第一个和第三个文件是RLE编码的,不能读取


您要求解决方案-我可以建议哪种方法可以读取文件而不会出现问题:

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')

你是否有一个“不开心”的RLE8图像,你可以分享测试请?这似乎是PNG而不是BMP。对不起,托管网站转换了它。这一个应该工作的链接似乎也不工作;网站决定删除我的图片。我已经创建了一个GitHub问题,在底部的zip文件中有三个图像。哦,没问题,只是一件小事。谢谢你提到pyvips@jcupitt:是否可以通过编程方式安装pyvips(如我对问题的评论中所述)?您好,当然可以,从eg下载libvips zipfile。然后解压缩,将
vips-x.y.z/bin
目录添加到
%PATH%
,运行
pip install pyvips
并启动Python。我根据您发布的说明卸载并重新安装了所有组件,在命令行中运行
vips
会得到与个人相同的结果,但尝试运行
import pyvips
会导致错误,最后一行读取的
无法加载库“C:\vips-dev-8.7\vips-dev-8.7\bin\libgobject-2.0-0.dll”:错误0xc1
,有什么建议吗?我尝试将C:\vips-dev-8.7\vips-dev-8.7\bin重新排序到路径变量的顶部,但没有成功。是的,我同意Mark的观点,我认为您有一个32位Python。官方libvips二进制文件需要64位。