python PIL open 无法打开 webp,jpeg等图像 ,报错 PIL.UnidentifiedImageError: cannot identify image file

问题:使用 PIL.Image.open() 能正常打开大部分图像文件,但是webp格式的图像无法打开,有一些jpg,png图像也无法打开,报错:

PIL.UnidentifiedImageError: cannot identify image file xxx

测试发现,这些图像在windows环境下使用图片查看器能正常查看,说明不是image file本身的问题。

from PIL import Image


# im_path = './test.webp'
im_path = './test.jpg'
im = Image.open(im_path, 'r')
print(im)

同时,上述代码能够打开其他正常的图像,说明代码没有问题。

一、无法打开webp文件

1. 查看本机是否有webp支持

可能是pillow包的问题导致图像无法打开,在安装pillow包的时候没有webp的支持,导致无法读取webp文件。

可以通过下面的方式查看本机已安装的pillow是否有webp的支持:

from PIL import features

print(features.pilinfo())  # info of pillow
# print(features.check_module('webp'))  # if webp support, True or False

从下面这段代码的输出结果(红色字体部分)可以看出,本机安装的pillow没有webp支持

--------------------------------------------------------------------
Pillow 8.0.1
Python 3.7.9 (default, Aug 31 2020, 12:42:55)
       [GCC 7.3.0]
--------------------------------------------------------------------
Python modules loaded from /home/xxx/python3.7/site-packages/PIL
Binary modules loaded from /home/xxx/python3.7/site-packages/PIL
--------------------------------------------------------------------
--- PIL CORE support ok, compiled for 8.0.1
--- TKINTER support ok
--- FREETYPE2 support ok, loaded 2.10.4
--- LITTLECMS2 support ok, loaded 2.10
*** WEBP support not installed
*** WEBP Transparency support not installed
*** WEBPMUX support not installed
*** WEBP Animation support not installed

--- JPEG support ok, compiled for 9.0
*** OPENJPEG (JPEG2000) support not installed
--- ZLIB (PNG/ZIP) support ok, loaded 1.2.11
--- LIBTIFF support ok, loaded 4.1.0
*** RAQM (Bidirectional Text) support not installed
*** LIBIMAGEQUANT (Quantization method) support not installed
*** XCB (X protocol) support not installed
--------------------------------------------------------------------
BLP
Extensions: .blp
Features: open
--------------------------------------------------------------------
BMP image/bmp
Extensions: .bmp
Features: open, save
--------------------------------------------------------------------
.........................这里省略..............................................
--------------------------------------------------------------------
XPM image/xpm
Extensions: .xpm
Features: open
--------------------------------------------------------------------
XVTHUMB
Features: open
--------------------------------------------------------------------
None

2. 安装webp支持,重装pillow包

首先要为本机安装webp的支持,然后重新安装pillow包。

对于unix系的电脑,输入以下命令安装webp支持:

sudo apt-get install libwebp-dev

对于maxos,命令如下:

brew install webp

然后需要重新安装anaconda中pillow包。为了保险,建议读者最好新建一个anaconda虚拟环境,然后在新建的环境中对包进行卸载和重装,避免重装过程中出现问题导致现有环境出错,那就哭都没地方哭了。。。。。。

conda uninstall pillow
conda install pillow

然后测试,发现pillow已经有webp的支持了。

--------------------------------------------------------------------
Pillow 9.4.0
Python 3.7.9 (default, Aug 31 2020, 12:42:55)
       [GCC 7.3.0]
--------------------------------------------------------------------
Python modules loaded from /home/xxx/python3.7/site-packages/PIL
Binary modules loaded from /home/xxx/python3.7/site-packages/PIL
--------------------------------------------------------------------
--- PIL CORE support ok, compiled for 9.4.0
--- TKINTER support ok, loaded 8.6
--- FREETYPE2 support ok, loaded 2.12.1
--- LITTLECMS2 support ok, loaded 2.12
--- WEBP support ok, loaded 1.2.4
--- WEBP Transparency support ok
--- WEBPMUX support ok
--- WEBP Animation support ok

--- JPEG support ok, compiled for 9.0
*** OPENJPEG (JPEG2000) support not installed
--- ZLIB (PNG/ZIP) support ok, loaded 1.2.13
--- LIBTIFF support ok, loaded 4.5.0
*** RAQM (Bidirectional Text) support not installed
*** LIBIMAGEQUANT (Quantization method) support not installed
*** XCB (X protocol) support not installed
--------------------------------------------------------------------
........后面的输出结果省略........

3.测试读取webp文件

from PIL import Image


im_path = './test.webp'
im = Image.open(im_path, 'r')
print(im)

成功!

二、读取某些jpg文件也报错 PIL.UnidentifiedImageError: cannot identify image file xxx

这个问题在安装webp支持并且重装pillow之后也会得到解决。

原因在于,这些jpg图像文件本身是webp格式,在保存为图像的时候后缀写成了 .jpg 或者 .png 等,在windows环境或者一些特定的图像查看器,这样的图像文件可以正常打开。

但是pillow包和部分图像查看器无法正确识别该图像文件的格式,所以PIL无法成功读取文件。

因此,在安装webp支持后,该问题也得到解决。

### 回答1: pil.unidentifiedimageerror: ca 是Pillow库中的一个错误,通常是由于图像格式不受支持或图像文件已损坏而引起的。要解决此错误,您可以尝试使用其他图像格式或修复图像文件。您还可以尝试更新Pillow库以获取最新版本,以确保它支持您正在使用的图像格式。 ### 回答2: "PIL.UnidentifiedImageError: CA"这个错误是由Python Imaging Library (PIL)引发的。它是一个表示图像无法识别的错误。 当使用PIL库尝试打开一个无法被识别的图像文件时,就会引发此错误。原因可能是图像文件格式不被PIL支持,文件损坏或图片文件名扩展名错误等。 要解决此错误,可以尝试以下几种方法: 1.检查图像文件格式:确保图像文件的格式是PIL库支持的格式,如.jpg、.png、.bmp等。 2.确保文件不存在损坏:尝试打开图像文件,查看是否可以正常显示。如果文件损坏,可以尝试重新下载或从其他正常的来源获取图像文件。 3.检查图像文件名扩展名:确保图像文件名的扩展名与其实际格式一致,例如,如果文件是jpeg格式,则文件名应该以.jpg结尾。 4.更新PIL库:确保使用的PIL版本是最新的。可以通过使用pip命令更新PIL库,例如在命令行中运行"pip install pillow --upgrade"来升级PIL。 如果以上方法仍然无法解决问题,可能需要考虑使用其他的图像处理库或转换图像文件格式。 总之,PIL.UnidentifiedImageError: CA错误表示PIL无法识别给定的图像文件。通过检查图像文件格式、确保文件不存在损坏、检查文件名扩展名和更新PIL库等方法可以尝试解决此错误。 ### 回答3: pil.unidentifiedimageerror: ca是一个PIL库(Python Imaging Library)中的错误信息。当使用PIL库加载或操作一张未被识别的图片时,就会出现这个错误。 这个错误通常出现在以下几种情况下: 1. 图片格式错误:PIL库只能识别特定的图片格式,如JPEG、PNG、GIF等等。如果你尝试加载一个不支持的图片格式,就会出现这个错误。 2. 图片损坏:如果你尝试加载一张损坏的图片,也会出现这个错误。损坏的图片可能无法被正常解析和识别,从而导致PIL无法处理它。 3. 图片路径错误:如果你提供给PIL库的图片路径不正确,比如图片不存在或者路径写错了,也会出现这个错误。 解决这个错误的方法有以下几种: 1. 确认图片格式:检查你要加载的图片是否符合PIL库能够识别的图片格式要求。可以尝试将图片保存为PIL支持的格式,然后再进行操作。 2. 检查图片是否损坏:使用其他图片查看器或编辑器打开这张图片,确认它是否能够正常显示。如果图片损坏,可以尝试使用其他的图片进行操作。 3. 确认图片路径:检查提供给PIL库的图片路径是否正确,确保图片存在于指定的路径中。 总之,pil.unidentifiedimageerror: ca是PIL库在加载或操作未被识别的图片时出现的错误。通过确认图片格式、检查图片是否损坏以及确认图片路径等方法,可以尝试解决这个错误。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值