我正在编写一个 golang 脚本来将图像发送到 Google AutoML API 的预测引擎。
它使用下面的代码接受大多数文件,但某些 .jpeg 或 .jpeg 会返回错误 500,说明文件无效。大多数情况下它都有效,但我无法找出例外情况。它们是完全有效的 jpg。
我正在使用 EncodeToString 对有效负载进行编码。
除其他外,我尝试对其进行解码,将其保存为 PNG,但似乎没有任何效果。它不喜欢某些图像。
我想知道我的方法是否有错误?任何帮助将非常感激。谢谢
PS文件保存到文件系统并上传到S3就好了。当它转到谷歌时,它只是对字符串的编码失败。
imgFile, err := os.Open(filename)
if err != nil {
fmt.Println(err)
}
img, fname, err := image.Decode(imgFile)
if err != nil {
fmt.Println(fname)
}
buf := new(bytes.Buffer)
err = jpeg.Encode(buf, img, nil)
// Encode as base64.
imgBase64Str := base64.StdEncoding.EncodeToString(buf.Bytes())
defer imgFile.Close()
payload := fmt.Sprintf(`{"payload": {"image": {"imageBytes": "%v"},}}`, imgBase64Str)
// send as a byte
pay := bytes.NewBuffer([]byte(payload))
req, err := http.NewRequest(http.MethodPost, URL.String(), pay)