ホームページ > バックエンド開発 > Golang > Go で Resize image.Image を [] バイトに効率的にエンコードする方法は?

Go で Resize image.Image を [] バイトに効率的にエンコードする方法は?

Patricia Arquette
リリース: 2024-12-05 18:49:10
オリジナル
978 人が閲覧しました

How to Efficiently Encode a Resized image.Image to a []byte in Go?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート