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

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

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-03 04:52:09579ブラウズ

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。