解决方案
在操作图片的py的头部加入如下代码:
from PIL import JpegImagePlugin
JpegImagePlugin._getmp = lambda x:None
mime = mimetypes.types_map[True][ext]
KeyError: '.mpo’
使用Openpyxl 操作Excel里的图片时出现以上错误,百度了也没有,去google逛了一圈,发现是有一种image的mime类型为.mpo,而我的Excel里的图片明明为.png格式的。
样例如下:
>>> import PIL.Image
>>> img = PIL.Image.open('bob a.jpg')
>>> img.format
'MPO'
>>> PIL.PILLOW_VERSION
'2.7.0'
首先要知道openpyxl是使用Pillow来识别图片的
谷歌了以后发现,这个png图片,被pillow识别为.mpo文件,而openpyxl处理时不支持
而MPO格式的图片和JPEG图片很像
可能是Pillow识别格式为JPEG或者Png的时候多加了一个额外的Flag并且标记为MPO
所以我们可以在导入任何图片之前,在pillow识别图片之前,加上方的两行代码(我不知道他的意思,JpegImagePlugin是pillow用于处理图片的,应该是不对源图片加任何尾缀处理)。
参考链接
Using openpyxl: KeyError: ‘.mpo’ while saving Excel workboo
k
Jpeg image being identified as MPO