第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Golang 無法從 S3 讀取 PNG

Golang 無法從 S3 讀取 PNG

Go
萬千封印 2023-03-21 15:16:19
我正在嘗試從 AWS S3 讀取 png 文件,它返回[]byte.但是,我無法從bytes.NewReader(). 這是我的代碼config := aws.Config{    Region: aws.String(region),}sess := session.Must(session.NewSession(&config))svc := s3.New(sess)s3Output, err := svc.GetObject(&s3.GetObjectInput{    Bucket: aws.String(bucket),    Key:    aws.String(key),})if err != nil {    return make([]byte, 0), err}buf := new(bytes.Buffer)buf.ReadFrom(s3Output.Body)imgReader := bytes.NewReader(buf.Bytes())_, format, err := image.DecodeConfig(imgReader )if err != nil {    return nil, err}fmt.Println(format)img, err := png.Decode(imgReader)if err != nil {    return nil, err}格式返回png但錯(cuò)誤png: invalid format: not a PNG file我嘗試使用文件并成功file, err := os.Open(ImageFile)if err != nil {    log.Fatal(err)}// decode jpeg into image.Imageimg, err := png.Decode(file)if err != nil {    log.Fatal(err)}file.Close()我該如何解決這個(gè)問題?更新這是輸出s3Output{  AcceptRanges: "bytes",  Body: buffer(0xc04220e040),  ContentLength: 102104,  ContentType: "image/png",  ETag: "\"d1b5490e26ddd6259cd5d17fa3c4dc6b\"",  LastModified: 2018-08-16 09:30:35 +0000 UTC,  Metadata: {  }}
查看完整描述

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ǔ)桶操作


查看完整回答
反對(duì) 回復(fù) 2023-03-21
?
BIG陽

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ā)布答案。


查看完整回答
反對(duì) 回復(fù) 2023-03-21
  • 2 回答
  • 0 關(guān)注
  • 136 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)