最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】Python中通过Image的open之后,去show结果打不开bmp图片,无法正常显示图片

Python crifan 10755浏览 0评论

【问题】

在windows的cmd命令行下,使用Python的PIL库打开并显示一个jpg图片:

        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

无法显示图片:

无法打开bmp图片

【解决过程】

1.刚开始很奇怪,为何打开的jpg图片,但是显示的时候,却变成bmp了。

后来才看懂,原来jpg图片被打开的之后,默认是以RGB打开的,所以就变成bmp图片了:

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.后来参考:

Python 如何显示图片?

去试了试,把打开bmp图片的工具,从默认的Windows Photo Viewer改为别的图片查看软件(我此处的为PhotoFitre)

右击 属性

改变打开方式改为其他图片处理工具

这样,每次再调用图片工具打开bmp图片的话,就可以使用自己所设置的PhotoFitre了。

4.再次运行脚本,就可以通过PhotoFitre打开bmp图片了:

photofitre可以打开bmp临时图片

5.另外,也有点诡异的是,本以为windows的Photo Viewer不支持bmp呢,结果将一个jpg转换为bmp后,用Photo Viewer去打开,也是可以正常打开的:

bmp是可以打开的

【总结】

Image.open出来的图片,Windows Photo Viewer对对其支持的不够好,而其他图片处理工具,比如PhotoFitre就可以正常打开。

所以,解决办法就是,把bmp图片默认打开方式,从 Windows Photo Viewer改为其他图片处理工具(比如Photofitre)即可使得Image Open后然后show出来的图片,可以正常显示。

转载请注明:在路上 » 【已解决】Python中通过Image的open之后,去show结果打不开bmp图片,无法正常显示图片

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (3)

  1. 我在google上找了相关的文档,你可以看一下\Lib\site-packages\PIL下Imageshow.py的源文件。这个问题在第99行。因为她使用的命令"start /wait %s && del /f %s"。会在生成的时候就直接删除,xp下是照片浏览器是阻塞模式所以可以使用,这也就能解释为什么有些图像预览软件可以,有些不行
    路过11年前 (2013-02-15)回复
    • 多谢你的解释。等偶有空再去折腾这个。
      crifan11年前 (2013-02-17)回复
87 queries in 0.180 seconds, using 22.15MB memory