gpt4 book ai didi

python - 调用python脚本并捕获二进制输出

转载 作者:行者123 更新时间:2023-12-01 22:37:34 25 4
gpt4 key购买 nike

我想在go中处理图片,并且我已经在python中有一个脚本来修改图片。我只需要从python脚本发送图像即可。为此,我通过以下方式进行操作:

Python脚本:

image = image_in_bytes

print (image)

转到脚本:
cmd := exec.Command("python", "image.py")
stdout, err := cmd.StdoutPipe()
if err != nil {
panic(err)
}
err = cmd.Start()
if err != nil {
panic(err)
}

body, _ := ioutil.ReadAll(stdout) //I need the image in []byte
cmd.Wait()

但是使用上面的代码,golang永远等待着,没有任何输出...

任何的想法?

最佳答案

如下所述对我来说完美无缺:

>>> with open("osx.png","rb") as imageFile:
... img = repr(imageFile.read())
>>> imageFile.close()
>>> with open("sample.py","w") as pyfile:
... pyfile.write(img)
>>> pyfile.close()

然后,我手动编辑pyfile看起来像

img = '\x89PNG\r\n\x1a\n[remainder skipped for brevity]'
print(img)

但同样重要的是,我运行了以下代码:

    cmd := exec.Command("python", "sample.py")
stdout, err := cmd.StdoutPipe()
if err != nil {
panic(err)
}
err = cmd.Start()
if err != nil {
panic(err)
}

body, err := ioutil.ReadAll(stdout) //I need the image in []byte
cmd.Wait()

if err != nil {
log.Fatalf("error reading bytes: %s", err)
}

log.Printf("Read %d bytes", len(body))

o, err := os.OpenFile("img.png", os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0660)
if err != nil {
log.Fatalf("opening img.png: %s", err)
}
defer o.Close()
n, err := o.Write(body)

if err != nil {
log.Fatalf("writing image to file: %s", err)
}
if n < len(body) {
log.Fatal("short write")
}

完整代码可在 https://gist.github.com/mwmahlberg/eb47495f68bed4e3cb8073447efdb53d下获得

我想可以肯定地认为,将图像数据存储在Python文件中的方式有​​些奇怪。

关于python - 调用python脚本并捕获二进制输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58216326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com