首頁 >後端開發 >Golang >如何將Go image.Image轉換為[]byte以便有效率地儲存和傳輸?

如何將Go image.Image轉換為[]byte以便有效率地儲存和傳輸?

Patricia Arquette
Patricia Arquette原創
2024-12-20 05:46:10607瀏覽

How to Convert a Go image.Image to a []byte for Efficient Storage and Transmission?

Go 中將Image.Image 轉換為[]byte

Go 中進行影像處理時,可能需要在image.Image 和[]byte 格式之間進行轉換。這對於將圖像儲存在資料庫中、透過網路發送圖像或執行各種圖像操作非常有用。

在您的特定情況下,您嘗試使用調整大小包調整圖片大小,然後將將 new_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.NewWriter 來包裝 []byte 切片,這不符合您的目的。 bufio.Writer 設計用於將輸出串流傳輸到 I/O 設備,而不是用於在記憶體中保存二進位資料。

要解決此問題,您應該使用 bytes.Buffer 來代替。 bytes.Buffer 提供了一個記憶體緩衝區,可用於建構[]byte 切片:

buf := new(bytes.Buffer)
err := jpeg.Encode(buf, new_image, nil)
send_S3 := buf.Bytes()

這段程式碼建立了一個名為buf 的bytes.Buffer 對象,並使用jpeg.Encode 函式寫入將影像資料調整大小到buf 中。 buf 的 Bytes() 方法然後傳回表示編碼影像的原始位元組數組。

透過此修改,您的程式碼將正確地將 new_image 轉換為 []byte 數組,從而允許您成功將其上傳到 S3 .

以上是如何將Go image.Image轉換為[]byte以便有效率地儲存和傳輸?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn