使用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中文網其他相關文章!