在Python中从外部程序的image stdout输出创建图像对象



我有一个程序,它生成图片并将它们保存到文件中,或者在标准输出中打印出原始图像数据。我使用Python子进程模块调用外部程序,捕获其stdout数据并从数据创建Python图像对象。但是,我一直得到"无法识别图像文件"错误。我是Python这部分的新手。如果你知道如何做到这一点,你能帮帮我吗?下面是我的代码:

p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
raw = p.stdout.read()
buff = StringIO.StringIO()
buff.write(raw)
buff.seek(0)
im = Image.open(buff)
im.show()

代码看起来不错。尝试添加…

assert len(raw) >= 4
assert raw.startswith('x89PNG')

raw = p.stdout.read()

…只是为了确保你得到的是模糊有效的数据。

试试这个…

from subprocess import check_output
from cStringIO import StringIO
from PIL import Image
raw = check_output(cmd)
buff = StringIO(raw)
im = Image.open(buff)
im.show()

更新# 2

问题是qrcode.exe中有一个bug,当它写入标准输出时,它试图将UNIX行结尾转换为DOS行结尾。

看起来这个错误可能在以后的版本中得到了修复。试题:https://code.google.com/p/qrencode-win32/downloads/detail?name=qrcodegui_setup-3.3.1b.exe&可以= 1,q = qrencode-win32

最新更新