You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux Mint下Python PIL的image.show()显示时长过短问题咨询

问题解答

不需要修改系统临时文件删除机制,这并非最优方案,反而可能导致系统临时文件堆积,占用磁盘空间。

为什么图片会自动消失?

PIL的image.show()方法工作逻辑如下:

  1. 将生成的图片保存到系统临时目录(如/tmp)的临时文件中;
  2. 调用系统默认图片查看器打开该文件;
  3. 一方面,Python脚本执行结束后,PIL会自动清理这个临时文件;另一方面,Linux Mint自带的systemd-tmpfiles服务会定期清理/tmp目录下超时的文件,这就是你看到图片20-30秒后消失的原因。

更合理的解决方法

方法1:手动保存到非临时目录

放弃依赖show()的临时文件,先将图片保存到你指定的固定目录,再调用查看器打开:

from PIL import Image
import subprocess

image = Image.new(mode="RGB", size=(X,Y), color=(255,255,255))
# 替换为你的自定义保存路径
save_path = "/home/你的用户名/Desktop/test_image.png"
image.save(save_path)
# 调用系统默认查看器打开
subprocess.run(["xdg-open", save_path])

这种方式下文件不会被自动清理,你可以随时查看。

方法2:自定义PIL查看器保留临时文件

如果一定要用show()方法,可以自定义查看器逻辑,让临时文件不被自动删除:

from PIL import Image
from PIL.ImageShow import Viewer

class PersistentViewer(Viewer):
    def save_image(self, image):
        # 获取临时文件路径,不自动删除
        temp_file = self.get_temp_file(image.format)
        image.save(temp_file)
        return temp_file

# 注册自定义查看器
Image.register_viewer("persistent", PersistentViewer())

image = Image.new(mode="RGB", size=(X,Y), color=(255,255,255))
# 使用自定义查看器打开
image.show(viewer="persistent")

注意:这种方法生成的临时文件需要你手动删除,避免磁盘空间浪费。

方法3:调整系统临时文件清理策略(不推荐)

如果坚持修改系统机制,可编辑/etc/systemd/tmpfiles.d/tmp.conf文件,修改/tmp目录的清理规则,比如延长文件保留时间:

# 将临时文件保留时长改为7天
D /tmp 1777 root root 7d

然后重启清理服务:

sudo systemctl restart systemd-tmpfiles-clean.service

但此方法会让所有临时文件都保留更久,容易造成磁盘空间被无用文件占用,不建议采用。

内容的提问来源于stack exchange,提问作者Vadim Kashtanov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 17:02:50