2 回答

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊
嘗試使用 AWS S3 下載管理器,它可以讓您直接下載圖像,其中包含上傳到 aws s3 的圖像的元數(shù)據(jù)和位置
buff := &aws.WriteAtBuffer{}
s3dl := s3manager.NewDownloader(sess)
_, err := s3dl.Download(buff, &s3.GetObjectInput{
Bucket: aws.String(bucket),
Key: aws.String(key),
})
if err != nil {
log.Printf("Could not download from S3: %v", err)
}
使用s3Output.Body
將為您提供輸出,因?yàn)樗呀?jīng)以字節(jié)為單位包含上傳的文件內(nèi)容。因此,您需要在將圖像轉(zhuǎn)換為字節(jié)后使用圖像創(chuàng)建一個(gè)緩沖區(qū)。該函數(shù)png.Decode
在 io.Reader 上的工作方式為:
func Decode(r io.Reader) (image.Image, error)
Decode 從 r 中讀取 PNG 圖像并將其作為 image.Image 返回。返回的圖像類型取決于 PNG 內(nèi)容。
檢查此示例,其中 Base64 代碼使用png.Decode
.
AWS S3 提供了專門的下載管理器來直接從存儲(chǔ)桶中下載文件。有關(guān)詳細(xì)信息,請(qǐng)檢查 AWS S3 基本存儲(chǔ)桶操作

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
事實(shí)證明,讀者會(huì)改變image.DecodeConfig
所以如果我使用
imgFormat := bytes.NewReader(buf.Bytes())
imgReader := bytes.NewReader(buf.Bytes())
_, format, err := image.DecodeConfig(imgFormat)
if err != nil {
return nil, err
}
fmt.Println(format)
img, err := png.Decode(imgReader)
if err != nil {
return nil, err
}
fmt.Println(img)
return nil, nil
它不會(huì)拋出任何錯(cuò)誤。我現(xiàn)在會(huì)堅(jiān)持這樣做,但如果有更好的方法,請(qǐng)隨時(shí)發(fā)布答案。
- 2 回答
- 0 關(guān)注
- 136 瀏覽
添加回答
舉報(bào)