>백엔드 개발 >Golang >S3 업로드를 위해 Go에서 이미지를 []바이트로 변환하는 방법은 무엇입니까?

S3 업로드를 위해 Go에서 이미지를 []바이트로 변환하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-30 21:13:18854검색

How to Convert an image.Image to []byte in Go for S3 Upload?

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

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