>백엔드 개발 >Golang >S3 업로드를 위해 Golang `image.Image`를 `[]byte`로 변환하는 방법은 무엇입니까?

S3 업로드를 위해 Golang `image.Image`를 `[]byte`로 변환하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-03 04:52:09579검색

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

이미지를 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.