Go에서 file의 타입을 판단하기 위해서 (파일명으로 ext 잘라서 사용하는 경우 말고)
검증할 때 괜찮은 github을 소개하려고 한다.
https://github.com/h2non/filetype
설치하고..
go get github.com/h2non/filetype
간단하게 살펴보면..
package main
import (
"fmt"
"io/ioutil"
"github.com/h2non/filetype"
)
func main() {
buf, _ := ioutil.ReadFile("gopher.jpg")
kind, _ := filetype.Match(buf)
if kind == filetype.Unknown {
fmt.Println("Unknown file type")
return
}
fmt.Printf("File type: %s. MIME: %s\n", kind.Extension, kind.MIME.Value)
}
func filetype.Match(buf []byte) (types.Type, error)
Match infers the file type of a given buffer inspecting its magic numbers signature
Match라는 함수는 지정된 버퍼의 파일 형식을 추론한다.
이것도 유용할 것 같다.
boolean으로 image 인지 아닌지를 체크한다.
package main
import (
"fmt"
"io/ioutil"
"github.com/h2non/filetype"
)
func main() {
buf, _ := ioutil.ReadFile("gopher.jpg")
if filetype.IsImage(buf) {
fmt.Println("File is an image")
} else {
fmt.Println("Not an image")
}
}
func filetype.IsImage(buf []byte) bool
IsImage checks if the given buffer is an image type
확인해주는 타입들은 이 정도로 Document에 나와 있다.
- jpg - image/jpeg
- png - image/png
- gif - image/gif
- webp - image/webp
- cr2 - image/x-canon-cr2
- tif - image/tiff
- bmp - image/bmp
- heif - image/heif
- jxr - image/vnd.ms-photo
- psd - image/vnd.adobe.photoshop
- ico - image/vnd.microsoft.icon
- dwg - image/vnd.dwg
image 관련해서 괜찮은 라이브러리 같고, 저분의 깃허브를 보면 이미지 프로세싱하는 코드도 있어서
살펴보면 좋을 것 같다.
'Language > Go' 카테고리의 다른 글
[Go] JWT token decode (0) | 2022.09.21 |
---|---|
[Go] Contains method for a slice (go version 1.18) (0) | 2022.09.16 |
[Go] get image width height (image: unknown format) (0) | 2022.09.15 |
[Go] get file extension (0) | 2022.09.14 |
[Go] timestamp Asia/Seoul (0) | 2022.09.11 |