ホームページ > バックエンド開発 > Golang > S3 アップロード用に Golang の「image.Image」を「[]byte」に変換するにはどうすればよいですか?

S3 アップロード用に Golang の「image.Image」を「[]byte」に変換するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-03 04:52:09
オリジナル
591 人が閲覧しました

How to Convert a Golang `image.Image` to a `[]byte` for S3 Upload?

Golang での image.Image から []byte 形式への画像の変換

この質問は、画像として表される画像の変換に関するものです。画像オブジェクトをバイト配列に変換します。Golang では []byte 型として表されます。具体的な課題は、提供されているコード スニペットで明らかであり、変換ステップが点線でマークされています。

// ...

original_image, _, err := image.Decode(bytes.NewReader(image_data))

new_image := resize.Resize(160, 0, original_image, resize.Lanczos3)

// Convert the image.Image to []byte here

new_path := key + "_sm"

err = mybucket.Put(new_path, send_S3, "image/jpg", "aclstring")
ログイン後にコピー

問題を修正するには、new_image に保存されている変更されたイメージを、バイト配列を使用して、Put 関数経由で S3 バケットに送信できるようにします。

解決策は、bytes.Buffer タイプを利用することです。データを書き込むためのメモリ内バッファ。このバッファは、JPEG エンコードされた画像データの宛先として機能します。対照的に、前に使用した bufio.Writer は、データをメモリに蓄積せずに、基礎となるライターに渡す前にデータをキャッシュするだけです。

コードをどのように調整するかは次のとおりです。

buf := new(bytes.Buffer)
err := jpeg.Encode(buf, new_image, nil)
send_s3 := buf.Bytes()
ログイン後にコピー

この更新されたコードでは、bytes.Buffer を使用して JPEG エンコードされた画像データをメモリに蓄積します。その後、このデータは、バイト配列として Bytes メソッドを呼び出して取得されます。バッファ。このバイト配列を Put 関数に渡して、画像を S3 バケットにアップロードできるようになりました。

以上がS3 アップロード用に Golang の「image.Image」を「[]byte」に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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