Pyinstaller-OSError:无法识别图像文件(PILLOW)

时间:2019-05-01 18:17:06

标签: python python-imaging-library pyinstaller

我已经用Python(3.7)创建了一个脚本来遍历目录并检查图像,以计算对象拍摄的图像量/计算图像中的空白量。

这在Python中有效,但是在使用PyInstaller转换为Windows exe文件时会引发OSError

for filename in os.listdir(path):
        image = Image.open(filename)
        width, height = image.size

        # Check if each pixel in image is white (255, 255, 255) and calculate percentage of image is white
        bg_count = next(n for n, c in image.getcolors(width * height) if c == (255, 255, 255))
        img_count = width * height - bg_count
        img_percent = img_count * 100.0 / width / height
        image.close()

        # If image doesn't meet requirements add to a csv created before the for loop
        if img_percent >= percentage:
            output_file.write(f"{filename} , {img_percent}%")
            output_file.write("\n")
            output_count += 1

在行图像= Image.open(文件名)上引起OSError

Traceback (most recent call last):
   File "main.py", line 47, in <module>
   File "main.py", line 23, in main
   File "site-packages\PIL\Image.py", line 2705, in open
OSError: cannot identify image file '1640681.jpg'
[5132] Failed to execute script main

1 个答案:

答案 0 :(得分:0)

我最近也遇到过同样的情况。如果我们的情况相同,则可以与其他图像格式文件(.png,.bmp等)一起使用,但是.jpg扩展名文件正确吗?

问题:

当您在像pipenv这样的虚拟环境中使用PyInstaller编译项目时,就会发生这种情况。

解决方案:

您应该使用Pip安装程序的所有程序包依赖项,包括PyInstaller,并在实际环境中直接使用PyInstaller将程序转换为Windows exe文件。

原因:

我不是专家,所以我真的不知道。我猜当在虚拟环境中使用PyInstaller时,它无法使用某些Windows dll。