You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动