Golang で Image.Image を []byte に変換する
Golang で画像処理を行う場合、場合によっては、 image.Image オブジェクトをバイト配列 ([]byte) に変換して、保存または送信を容易にします。一般的なシナリオの 1 つは、画像のサイズを変更して、Amazon S3 などのオブジェクト ストレージ サービスにアップロードすることです。
画像処理中に、画像データの形式を []byte から image.Image に変更し、再び元の形式に戻す必要があります。 []バイト。 S3 にアップロードするために、サイズ変更された画像 (new_image) を [] バイトに変換しようとすると問題が発生します。
解決策:
この問題を解決するには、キャッシュ層として機能する bufio.Writer を使用する代わりに、bytes.Buffer を使用します。 bytes.Buffer はデータをメモリに直接書き込むため、エンコードされた画像データをバイト配列でキャプチャするのに適しています。
コード スニペット:
次のコード スニペットは、例を示しています。を使用して、サイズ変更された image.Image (new_image) を [] バイトに変換する方法bytes.Buffer:
import ( // Import necessary Go packages ) func main() { // Establish S3 connection (if necessary) // Get image data from S3 (already in []byte format) // ... processing to resize the image ... // Create a bytes.Buffer to capture the encoded image data buf := new(bytes.Buffer) // Encode the resized image using JPEG format err := jpeg.Encode(buf, new_image, nil) if err != nil { // Handle error } // Convert the bytes.Buffer contents to a byte array send_S3 := buf.Bytes() // ... upload to S3 (using send_S3 as the image data) ... }
bytes.Buffer を利用することで、サイズ変更された画像が []byte 配列に正常に変換され、Amazon S3 へのアップロードが可能になります。
以上がGolang image.Image をストレージ用に []byte に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。