http://exif.regex.info/exif.cgi 이 사이트 처럼 사진 업로드 하면 exif 정보 읽어서 표시해주는 사이트를 golang으로 만들어 볼려고 시작했는데 이것저것 테스트 하다가 내린 결론은 사이트 처럼 단순 정보를 출력하는 페이지를 만들거면 이 방식 보다 exiftool.org 에서 바이너리 파일 받아서 돌린담에 그 결과를 출력하는게 더 간단하고 확실하다는걸 깨달았음. 아래에 올린 소스는 그냥 여태 삽질한거 아쉬워서 그냥 기록용으로 남겨둠.
package main import ( "fmt" "io" "os" exif "github.com/dsoprea/go-exif/v3" exifcommon "github.com/dsoprea/go-exif/v3/common" ) func main() { var filePath = "./IMG_20170912_222301630.jpg" file, err := os.Open(filePath) if err != nil { panic(err) } defer file.Close() r := io.Reader(file) rawExif, err := exif.SearchAndExtractExifWithReader(r) if err != nil { panic(err) } im, err := exifcommon.NewIfdMappingWithStandard() if err != nil { panic(err) } ti := exif.NewTagIndex() _, index, err := exif.Collect(im, ti, rawExif) if err != nil { panic(err) } cb := func(ifd *exif.Ifd, ite *exif.IfdTagEntry) error { //이부분이 재귀로 들어오면서 호출됨 val, _ := ite.Value() tmp := fmt.Sprintf("%s = %v", ite.TagName(), val) fmt.Println(tmp) return nil } err = index.RootIfd.EnumerateTagsRecursively(cb) if err != nil { panic(err) } }
이것저것 테스트 한건 많은데 이게 그나마 제일 심플하게 전부 다 출력하는거라 이것만 남겨둠.
참고: https://pkg.go.dev/github.com/dsoprea/go-exif/v3#pkg-examples
답글 남기기