0

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

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

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

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

请注意,这在我的 Mac 上不是这种情况,而仅限于 raspberry pi B+ ,wheezy raspbian。

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

提前致谢

4

1 回答 1

0

这种行为是预期的,因为 Windows 和 OS X 都分别调用操作系统的运行命令start& open-请参阅参考资料。在 Raspberry Pi 和其他类似系统上,库直接在 Python 的MainThread上调用MagickDisplayImage

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

  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)

当然,里程会因操作系统发行版/版本/桌面环境而异。

于 2015-02-25T03:10:38.023 回答