Go を使用した画像のデコードとエンコード
Go では、画像から画像を変換します。画像タイプからバイト スライス ([]byte) )は、画像データの保存と送信に不可欠です。この記事では、この変換中に発生する一般的な問題と解決策を示します。
提供されたコード スニペットは、バケットから画像をダウンロードし、それを image.Image にデコードし、サイズを変更し、サイズ変更された画像を変換しようとします。 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 がデータをキャッシュするために使用されることですが、この場合、メモリバッファに直接書き込みます。これを解決するには、代わりに bytes.Buffer を使用し、メモリに書き込みます。
buf := new(bytes.Buffer) err := jpeg.Encode(buf, new_image, nil) send_s3 := buf.Bytes()
bytes.Buffer を使用すると、サイズ変更された画像がメモリに直接書き込まれ、画像に適したバイト スライスが作成されます。 S3にアップロード中です。これにより、コードはサイズ変更された画像を正常にエンコードし、目的のバケットにアップロードできるようになります。
以上がGo で Resize image.Image を [] バイトに効率的にエンコードする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。