Go 에서 image 의 width , height 가져 올 때,
image: unknown format
이런 오류가 발생한다면..
거의 내장된 image package 를 사용할거고..
package main
import (
"fmt"
"image"
"os"
)
func main() {
imagePath := "gopher.jpg"
file, err := os.Open(imagePath)
if err != nil {
panic(err)
}
defer file.Close()
image, _, err := image.DecodeConfig(file)
if err != nil {
panic(err)
}
fmt.Println("Width:", image.Width, "Height:", image.Height)
}
image.DecodeConfig 함수를 사용하여 쉽게 가져 올 수 있는데..
보통 에디터를 사용하여 자동완성으로
import 되어 저렇게 함수 작성시
"fmt", "image", "os" 3개의 package 를 볼 수 있는데
여기서 "image" 만 있으면
image: unknown format
오류 발생한다.
이 부분때문에 시간을 소요했는데.. 이래서 꼭 Document 를 보는게 낫다.
위에 링크 들어가면
import _ "image/png"
이렇게 따로 또 선언해줘야한다.
그래야 unknown format 오류 안남!
import (
"image"
_ "image/gif"
_ "image/jpeg"
_ "image/png"
)
이렇게 전부 import 해서 사용하자!
만약에 이 방법으로 안된다?
그러면 File Seek 가 잘못되었을 확률이 높다.
func (*os.File).Seek(offset int64, whence int) (ret int64, err error)
Seek sets the offset for the next Read or Write on file to offset, interpreted according to whence: 0 means relative to the origin of the file, 1 means relative to the current offset, and 2 means relative to the end. It returns the new offset and an error, if any. The behavior of Seek on a file opened with O_APPEND is not specified.
If f is a directory, the behavior of Seek varies by operating system; you can seek to the beginning of the directory on Unix-like operating systems, but not on Windows.
파일을 읽고 있는 위치를 잡아 줘야 한다.
file, err := os.Open(imagePath)
defer file.Close()
if err != nil {
panic(err)
}
file.Seek(0, 0)
Seek 를 첫 위치로 잡아주면 해결 될 것이다.
'Language > Go' 카테고리의 다른 글
[Go] Contains method for a slice (go version 1.18) (0) | 2022.09.16 |
---|---|
[Go] filetype (MIME type) (0) | 2022.09.16 |
[Go] get file extension (0) | 2022.09.14 |
[Go] timestamp Asia/Seoul (0) | 2022.09.11 |
[Go] Gin vs Echo vs Fiber Framework (0) | 2022.08.21 |