Golang에서 image.Image를 []바이트로 변환
이 기사에서는 image.Image를 []로 변환하는 문제를 다룹니다. ]Go의 바이트입니다. 문제는 제공된 코드 조각에서 점선으로 표시된 선에 있습니다.
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")
목표는 S3 버킷에 업로드하기 위해 image.Image, new_image를 []바이트 형식으로 변환하는 것입니다.
해결책
이 문제를 해결하는 핵심은 bufio.Writer 대신 bytes.Buffer를 활용하세요. bytes.Buffer는 메모리에 데이터를 쓰도록 설계된 반면, bufio.Writer는 데이터를 다른 작성자에게 전달하기 전에 메모리에 간단히 캐시합니다.
buf := new(bytes.Buffer) err := jpeg.Encode(buf, new_image, nil) send_s3 := buf.Bytes()
bytes.Buffer를 사용하여 인코딩된 이미지를 효과적으로 캡처합니다. send_s3이라는 []바이트 슬라이스. 그런 다음 이 슬라이스를 사용하여 S3 버킷에 이미지를 업로드할 수 있습니다.
위 내용은 S3 업로드를 위해 Go에서 이미지를 []바이트로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!