Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menukar `image.Image` Golang kepada `[]bait` untuk Muat Naik S3?

Bagaimana untuk Menukar `image.Image` Golang kepada `[]bait` untuk Muat Naik S3?

Linda Hamilton
Linda Hamiltonasal
2024-12-03 04:52:09586semak imbas

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

Menukar Imej daripada imej.Imej kepada Format []bait dalam Golang

Soalan ini berkaitan dengan menukar imej yang diwakili sebagai imej. Objek imej kepada tatasusunan bait, diwakili sebagai jenis []bait dalam Golang. Cabaran khusus adalah jelas dalam coretan kod yang disediakan, di mana langkah penukaran ditandakan dengan garis putus-putus.

// ...

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")

Untuk membetulkan isu tersebut, niatnya adalah untuk mengubah imej yang diubah suai, disimpan dalam new_image, menjadi tatasusunan bait, membolehkan ia dihantar ke baldi S3 melalui fungsi Put.

Ubatnya terletak pada penggunaan bytes.Jenis penimbal, yang menawarkan penimbal dalam memori untuk menulis data. Penampan ini berfungsi sebagai destinasi untuk data imej berkod JPEG. Sebaliknya, bufio.Writer yang digunakan sebelum ini hanya menyimpan data sebelum menghantarnya kepada penulis asas, tanpa mengumpul data dalam ingatan.

Begini cara kod harus dilaraskan:

buf := new(bytes.Buffer)
err := jpeg.Encode(buf, new_image, nil)
send_s3 := buf.Bytes()

Kod yang dikemas kini ini menggunakan bait. Penampan untuk mengumpul data imej berkod JPEG dalam ingatan, yang kemudiannya diambil sebagai tatasusunan byte dengan memanggil kaedah Bytes pada penimbal. Tatasusunan bait ini kini boleh dihantar ke fungsi Put untuk memuat naik imej ke baldi S3.

Atas ialah kandungan terperinci Bagaimana untuk Menukar `image.Image` Golang kepada `[]bait` untuk Muat Naik S3?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn