在 Raspbian 上防止魔杖显示方法中断

Prevent interruption of wand display method on Raspbian

我在我的树莓派项目中使用 wand 库 运行 raspbian 和 python 2.7。

我有如下代码部分显示来自url的图片:

with Image(file=urllib2.urlopen(r.text)) as imageOBJ:
    display(imageOBJ)

这些行正确显示图像。但是,我希望此 window 保持打开状态,并希望我的流程继续处理脚本中的其他内容。因为 30 秒后我想重复同样的事情并更改 window 中的图像。现在,我的代码不是 运行,直到我关闭显示 window。

请注意,我的 mac 不是这种情况,只有 raspberry pi B+,气喘吁吁 raspbian。

如何在不关闭图像显示的情况下防止这种行为window?

提前致谢

此行为是预期的,因为 Windows 和 OS X 分别调用 OS 的 运行 命令 startopen -- see reference. On the Raspberry Pi, and other like systems, the library calls MagickDisplayImage 直接在 Python 的 MainThread.

要在 Raspberry Pi 上模拟类似行为,请使用 xdg-open 实用程序,以及 Python 的 subprocesstmpfile 模块。

  1. 创建一个临时文件来保存图像
  2. 将图像写入临时文件
  3. 调用 xdg-open 在隔离进程中打开临时文件。
import subprocess, tempfile
from wand.image import Image

with Image(filename='wizard:') as imageOBJ:
    tempOBJ = tempfile.NamedTemporaryFile(suffix='.jpg',
                                          prefix='/tmp/myProject-',
                                          delete=False)
    imageOBJ.save(file=tempOBJ)
    subprocess.call('xdg-open {}'.format(tempOBJ.name), shell=True)

当然,OS distro/version/desktop-environment.

的里程数会有所不同