zoukankan      html  css  js  c++  java
  • Python中通过Image的open之后,去show结果打不开bmp图片,无法正常显示图片

    在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

    无法显示图片:

    无法打开bmp图片

    【解决过程】

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

    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出来的图片,可以正常显示。

  • 相关阅读:
    redis的发布订阅模式pubsub
    django集成celery之callback方式link_error和on_failure
    linux命令和awk
    使用beanstalkd实现定制化持续集成过程中pipeline
    JavaScript实现模糊推荐的input框(类似百度搜索框)
    hadoop streaming编程小demo(python版)
    一个scrapy框架的爬虫(爬取京东图书)
    mongodb生产环境(副本集模式)集群搭建配置
    TensorFlow加载图片的方法
    STC15W408AS简单使用教程-简单的光强检测!
  • 原文地址:https://www.cnblogs.com/DjangoBlog/p/3557828.html
Copyright © 2011-2022 走看看