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

Python 如何显示图片?

去试了试,把打开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出来的图片,可以正常显示。

Python中通过Image的open之后,去show结果打不开bmp图片,无法正常显示图片的更多相关文章

  1. 在Python中,如何用一行代码去判定整数二进制中的连续 1

    利用字节位操作如何判断一个整数的二进制是否含有至少两个连续的1 的方法有多种,大家第一反应应该想到的是以下的第一种方法. 方法一:从头到尾遍历一遍每一位即可找出是否有连续的1存在 这个方法是最普遍的. ...

  2. vue中通过定义的数组循环将img的src引入图片却不显示图片问题解决方法

    需要前端循环图片数组将其放到页面中去. 需要将src渲染到页面中,如果单纯写src的路径会出现不显示图片的问题 因为图片路径在assets,所以需要require一下.

  3. Python中,添加写入数据到已经存在的Excel的xls文件,即打开excel文件,写入新数据

    背景 Python中,想要打开已经存在的excel的xls文件,然后在最后新的一行的数据. 折腾过程 1.找到了参考资料: writing to existing workbook using xlw ...

  4. Python 中的哈希表

    Python 中的哈希表:对字典的理解   有没有想过,Python中的字典为什么这么高效稳定.原因是他是建立在hash表上.了解Python中的hash表有助于更好的理解Python,因为Pytho ...

  5. [转]Python中的str与unicode处理方法

    早上被python的编码搞得抓耳挠腮,在搜资料的时候感觉这篇博文很不错,所以收藏在此. python2.x中处理中文,是一件头疼的事情.网上写这方面的文章,测次不齐,而且都会有点错误,所以在这里打算自 ...

  6. python2.7高级编程 笔记二(Python中的描述符)

    Python中包含了许多内建的语言特性,它们使得代码简洁且易于理解.这些特性包括列表/集合/字典推导式,属性(property).以及装饰器(decorator).对于大部分特性来说,这些" ...

  7. python中的collections

    python中有大量的内置模块,很多是属于特定开发的功能性模块,但collections是属于对基础数据的类型的补充模块,因此,在日常代码中使用频率更高一些,值得做个笔记,本文只做主要关键字介绍,详细 ...

  8. python中的反射

    在绝大多数语言中,都有反射机制的存在.从作用上来讲,反射是为了增加程序的动态描述能力.通俗一些,就是可以让用户参与代码执行的决定权.在程序编写的时候,我们会写很多类,类中又有自己的函数,对象等等.这些 ...

  9. Python中内置数据类型list,tuple,dict,set的区别和用法

    Python中内置数据类型list,tuple,dict,set的区别和用法 Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, ...

随机推荐

  1. javascript/jquery给动态加载的元素添加click事件

    /** 这种写法:在重新加载数据后事件依然有效*/$(document).on('click', '#district_layer ul li', function () { });

  2. $.parseJSON 将json 对象转换为array

    项目中,通过json2.js的JSON.parse(jsonstr)的时候,整个返回值是object $.parseJSON(jsonstr)返回的也是object 而我想要的是array(objec ...

  3. yii下使用oracle中文都变成问号乱码的解决方法

    在配置文件中,一般会用以下配置: 'db_oracle'=>array( 'class' => 'CDbConnection', 'connectionString'=>'oci:d ...

  4. Spring引用测试

    上下文 using System; using Spring.Core; using Spring.Aop; using System; using Spring.Core; using Spring ...

  5. Acitivity间数据的传递

    使用startActivityForResult方法进行数据传递.    MainActivity.java: public class MainActivity extends Activity { ...

  6. Android更改桌面应用程序launcher的两种方式

    http://blog.csdn.net/mdx20072419/article/details/9632779/ launcher,也就是android的桌面应用程序.下图是我正在使用的魅族手机的l ...

  7. web开发常用图片格式

    web开发常用图片格式有:gif   jpg/jpeg    png gif:图片压缩率高,可以显示动画,但是只能显示256色,可能造成颜色丢失. jpg:图片压缩率高(有损压缩),可以用小文件来显示 ...

  8. LaTeX Pdf to Word

    用LaTeX写的文稿,生成的pdf,如果要改成word文档,如何是最合适的方式? 查了很多帖子,比较靠谱的一种方式是先将pdf转成rtf格式,再用word打开rtf文件.也有直接从tex文件直接转成d ...

  9. 解决DropDownList 有一个无效 SelectedValue,因为它不在项目列表中。这是怎么回事?

    产生错误原因: 绑定在DropDownList的时候 DropDownList没有对应的值 查了一下MSDN:DropDownList.SelectedValue 属性: 此属性返回选定的 ListI ...

  10. Codevs 2611 观光旅游(floyed最小环)

    2611 观光旅游 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 某旅游区里面有N个景点.两个景点之间可能直接有道路相连,用 ...