Python3.6.2调用Windows照片查看器打开图片失败,默认启动Photoshop求助
解决Python PIL Image.show()启动Photoshop而非Windows Photo Viewer的问题
我懂你的困扰——用PIL的Image.show()本想调用Windows默认的照片查看器,结果却打开了Photoshop,这是因为系统里.jpg格式的默认关联程序被设置成Photoshop啦。下面给你两种可行的解决办法:
方法一:修改系统默认图片打开程序
这是最直接的方案,改完之后不仅Python代码会用Windows Photo Viewer,平时双击图片也会默认用它打开:
- 右键你的
Tulips.jpg图片,选择「打开方式」→「选择其他应用」 - 在弹出的列表里找到「Windows Photo Viewer」(如果没看到,点击「更多应用」往下翻)
- 勾选「始终使用此应用打开.jpg文件」,点击确定就行
方法二:在代码中直接指定Windows Photo Viewer打开
如果不想修改系统默认设置,或者需要在代码里强制用Windows Photo Viewer,可以用subprocess模块直接调用程序,绕过系统关联:
import subprocess import os # 获取图片的绝对路径,避免路径问题 image_abs_path = os.path.abspath('Tulips.jpg') # 调用Windows Photo Viewer的命令 subprocess.run([ 'rundll32.exe', r'%ProgramFiles%\Windows Photo Viewer\PhotoViewer.dll', 'ImageView_Fullscreen', image_abs_path ])
补充说明下PIL Image.show()的原理
其实Image.show()并没有直接调用某个固定的查看器,它会先把图片保存成一个临时文件,然后调用系统中对应格式的默认关联程序来打开这个临时文件。所以只要你的系统里.jpg默认是Photoshop,它就会启动PS啦。
内容的提问来源于stack exchange,提问作者Endriu Andrei




