首頁 > 後端開發 > Golang > 如何在 Go 中有效地將調整大小的 image.Image 編碼為 []byte?

如何在 Go 中有效地將調整大小的 image.Image 編碼為 []byte?

Patricia Arquette
發布: 2024-12-05 18:49:10
原創
978 人瀏覽過

How to Efficiently Encode a Resized image.Image to a []byte in Go?

使用Go對影像進行解碼與編碼

在Go中,將影像從image.Image類型轉換為位元組切片([ ]byte) )對於儲存和傳輸影像資料至關重要。本文介紹了此轉換過程中遇到的常見問題並提供了解決方案。

提供的程式碼片段嘗試從儲存桶中下載圖像,將其解碼為圖像,調整其大小,然後轉換調整後的圖像圖像返回位元組切片以上傳到 S3。然而,程式碼中突出顯示的部分就是問題所在。

// reset format the image.Image to data []byte here
var send_S3 []byte
var byteWriter = bufio.NewWriter(send_S3)
err = jpeg.Encode(byteWriter, new_image, nil)
登入後複製

問題在於 bufio.Writer 用於在將資料寫入另一個 writer 之前對其進行緩存,但在這種情況下,我們需要直接寫入記憶體緩衝區。為了解決這個問題,我們使用 bytes.Buffer 來代替,它將寫入記憶體。

buf := new(bytes.Buffer)
err := jpeg.Encode(buf, new_image, nil)
send_s3 := buf.Bytes()
登入後複製

透過使用 bytes.Buffer,調整大小的映像將直接寫入內存,創建適合的位元組切片上傳到S3。這允許程式碼成功編碼並將調整大小的圖像上傳到所需的儲存桶。

以上是如何在 Go 中有效地將調整大小的 image.Image 編碼為 []byte?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板