Menukar imej.Imej kepada []bait dalam Golang
Dalam artikel ini, kami menangani isu menukar imej.Imej kepada [ ]bait dalam Go. Titik sakit terletak pada garisan yang ditunjukkan oleh garis putus-putus dalam coretan kod yang disediakan:
image_data, err := mybucket.Get(key) if err != nil { panic(err.Error()) } // reset format of data []byte to image.Image original_image, _, err := image.Decode(bytes.NewReader(image_data)) new_image := resize.Resize(160, 0, original_image, resize.Lanczos3) - - - - - - - - - - - - - - - - - - - - - - - - - - - // 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) new_path := key + "_sm" err = mybucket.Put(new_path, send_S3, "image/jpg", "aclstring")
Objektifnya adalah untuk mengubah imej. Imej, new_image, ke dalam format []bait untuk memuat naik ke baldi S3.
Penyelesaian
Kunci untuk menyelesaikan isu ini adalah dengan gunakan bait.Penimbal bukannya bufio.Penulis. bytes.Buffer direka bentuk untuk menulis data dalam ingatan, manakala bufio.Writer hanya menyimpan cache data dalam ingatan sebelum menyerahkannya kepada penulis lain.
buf := new(bytes.Buffer) err := jpeg.Encode(buf, new_image, nil) send_s3 := buf.Bytes()
Dengan menggunakan bytes.Buffer, kami menangkap imej yang dikodkan dengan berkesan ke dalam kepingan []bait bernama send_s3. Potongan ini kemudiannya boleh digunakan untuk memuat naik imej ke baldi S3.
Atas ialah kandungan terperinci Bagaimana untuk Menukar imej.Imej kepada []bait dalam Go for S3 Upload?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!