在Golang 中將image.Image 轉換為[]byte
在本文中,我們解決將image.Image 轉換為[ 的問題]Go 中的位元組。痛點在於提供的程式碼片段中虛線指示的行:
image_data, err := mybucket.Get(key) if err != nil { panic(err.Error()) } // reset format of data []byte to image.Image original_image, _, err := image.Decode(bytes.NewReader(image_data)) new_image := resize.Resize(160, 0, original_image, resize.Lanczos3) - - - - - - - - - - - - - - - - - - - - - - - - - - - // 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) new_path := key + "_sm" err = mybucket.Put(new_path, send_S3, "image/jpg", "aclstring")
目標是將 image.Image、new_image 轉換為 []byte 格式以上傳到 S3 儲存桶。
解
解決這個問題的關鍵是利用bytes.Buffer 而不是 bufio.Writer。 bytes.Buffer 旨在將資料寫入內存,而 bufio.Writer 只是將資料緩存在內存中,然後將其傳遞給另一個寫入器。
buf := new(bytes.Buffer) err := jpeg.Encode(buf, new_image, nil) send_s3 := buf.Bytes()
透過使用 bytes.Buffer,我們可以有效地將編碼影像擷取到名為 send_s3 的 [] 位元組切片。然後可以使用該切片將影像上傳到 S3 儲存桶。
以上是如何在 Go 中將 image.Image 轉換為 []byte 以進行 S3 上傳?的詳細內容。更多資訊請關注PHP中文網其他相關文章!