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