PIL Image模块 show函数无法正常显示图片

环境:Win7+python 2.7.6

import Imageim=Image.open('3.png')im.show()

显示结果:

一直显示正在加载,无法打开,或者显示内容不存在等。
直接双击图片则可正常显示
解决办法:(X: 为python安装路径,默认C盘)
X:/Python26/lib/site-packages/PIL/ImageShow.py, 第99行(附近)替换为:
return “start /wait %s && PING 127.0.0.1 -n 5 > NUL && del /f %s” % (file, file)


PING 127.0.0.1 -n 5 > NUL
含义是:
ping 127.0.0.1也就是自己的主机
-n 5 ping5次,花费时间大概为4秒左右
nul 不在屏幕上显示ping的运行结果

具体原因:(个人对参考资料翻译结果,仅供参考,英语水平较差,可能错误较多,英文原版见下文参考链接)
在Windows XP上默认的图像查看器能够在阻塞工作模式-这意味着命令将一直等到图像窗口将被关闭才执行。
因为这种行为,他们(python)创建一个命令行用来在图像被显示后删除临时文件。(见ImageShow.py 99行附近)
而Windows Vista则不一样,一旦命令被执行它就立即返回。
因此,临时文件会被立即删除,图片查看器无法拥有足够的时间来加载这个已经被删除的图片。
于是,在原命令中添加一条没用的命令(PING 127.0.0.1 -n 5 > NUL)为图像加载争取时间,问题解决。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值