go - 如何通过标准输入将 []byte 传递给外部 exiftool?

标签 go

我正在尝试在 golang 中做 bash 等价物:

cat image.jpg | exiftool -author=some_auth - > updated_image.jpg

exiftool '-' 选项使它从 stdin 读取,但是说我将图像存储在一个变量中,例如 var img []bytes//在 golang 中

我希望 stdin 包含来自 img 的字节和对 exiftool 的系统调用以从 stdin 读取这些字节,将结果 (stdout) 保存在另一个 []byte - 我是 golang 的新手,我该如何处理这个?

我不想保存到磁盘上的临时文件。

谢谢

最佳答案

有点像

out, err := os.Create("updated_image.jpg")
if err != nil {
    log.Fatal(err)
}
cmd := exec.Command("exiftool", "-author=some_auth", "-")
cmd.Stdout = out
cmd.Stdin = bytes.NewReader(img)
err = cmd.Run()
if err != nil {
    log.Fatal(err)
}
out.Close()

应该可以。

请注意,我还没有测试代码。

关于go - 如何通过标准输入将 []byte 传递给外部 exiftool?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31108091/

相关文章:

go - 为什么Goroutines与顺序执行所花的时间几乎相同?

go - Go 有文件名限制吗?

unit-testing - 如何在不同的包中测试未导出的结构字段?

go - 将数组复制到 map 会导致 map 中的相同项目

amazon-web-services - 如何将 DynamoDB 流连接到运动流?

Golang 中的 Json 解码/解码

go - 检测 Go 例程中断

go - 递归附加到 slice 不起作用

go - 如何在 MacOS 上制作 wxWidgets(使用 golang)重绘窗口?

go - 如何迭代 charmap.All 中的 Charmap 列表并比较名称?