이미지를 image.Image에서 Golang의 []바이트 형식으로 변환
이 질문은 이미지로 표현된 이미지를 변환하는 것과 관련이 있습니다. 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는 데이터를 메모리에 축적하지 않고 기본 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!