Go에서 image 라이브러리를 다루다 보면 image.NRGBA
이런 타입들을 만난다.
// NRGBA is an in-memory image whose At method returns color.NRGBA values.
type NRGBA struct {
// Pix holds the image's pixels, in R, G, B, A order. The pixel at
// (x, y) starts at Pix[(y-Rect.Min.Y)*Stride + (x-Rect.Min.X)*4].
Pix []uint8
// Stride is the Pix stride (in bytes) between vertically adjacent pixels.
Stride int
// Rect is the image's bounds.
Rect Rectangle
}
픽셀, 보폭, 이미지 경계 등을 담고 있는 구조체이고
image.NRGBA 타입을 []byte (byte slice)로 변경할 일이 있을 때가 있다.
예를 들면 object storage 서버나 s3 서버에 업로드할 때 []byte 형태로 변경을 해서 올려야 할 것이다.
그래서 방법을 소개하면
import "image/jpeg"
newbuf := new(bytes.Buffer)
err = jpeg.Encode(newbuf, thumb, nil) // nil 부분은 jpeg.Options{} Quality
if err != nil {
panic(err)
}
buf := newbuf.Bytes()
file type 에 따라 png.Encode 함수도 존재한다.
이렇게 하면 []byte 로 처리 가능하다.
'Language > Go' 카테고리의 다른 글
[Go] image library (image processing) (0) | 2022.09.29 |
---|---|
[Go] Convert byte slice to image (io.Reader) (0) | 2022.09.29 |
[Go] JWT token decode (0) | 2022.09.21 |
[Go] Contains method for a slice (go version 1.18) (0) | 2022.09.16 |
[Go] filetype (MIME type) (0) | 2022.09.16 |