在windows的cmd命令行下,使用Python的PIL库打开并显示一个jpg图片:
1 2 3 | openedImg = Image. open (saveToFile); print "openedImg=" ,openedImg; openedImg.show(); |
结果是,图片被windows的图片查看器打开,却打开的是bmp图片,并且出错:
Windows Photo Viewer can’t open this picture because either the picture is deleted, or it’s in a location that isn’t avaliable
无法显示图片:
【解决过程】
1.刚开始很奇怪,为何打开的jpg图片,但是显示的时候,却变成bmp了。
后来才看懂,原来jpg图片被打开的之后,默认是以RGB打开的,所以就变成bmp图片了:
1 2 | save verify code pic OK, saveToFile= captcha /20120702_123856_captcha .jpg openedImg= <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=60x24 at 0x38675A8> |
2.但是不值得为何此处bmp图片,且打不开。
然后试了是File->Make a copy等操作,也都无法复制该图片,看起来,好像是该图片根本就不存在。
3.后来参考:
去试了试,把打开bmp图片的工具,从默认的Windows Photo Viewer改为别的图片查看软件(我此处的为PhotoFitre)
这样,每次再调用图片工具打开bmp图片的话,就可以使用自己所设置的PhotoFitre了。
4.再次运行脚本,就可以通过PhotoFitre打开bmp图片了:
5.另外,也有点诡异的是,本以为windows的Photo Viewer不支持bmp呢,结果将一个jpg转换为bmp后,用Photo Viewer去打开,也是可以正常打开的:
【总结】
Image.open出来的图片,Windows Photo Viewer对对其支持的不够好,而其他图片处理工具,比如PhotoFitre就可以正常打开。
所以,解决办法就是,把bmp图片默认打开方式,从 Windows Photo Viewer改为其他图片处理工具(比如Photofitre)即可使得Image Open后然后show出来的图片,可以正常显示。