go-exiftool alternatives and similar packages
Based on the "Files" category.
Alternatively, view go-exiftool alternatives based on common mentions on social networks and blogs.
-
bigfile
DISCONTINUED. Bigfile -- a file transfer system that supports http, rpc and ftp protocol https://bigfile.site -
fileconversion
A Go library to convert various file formats to plaintext and provide related functions -
go-staticfiles
Collects assets (css, js, images...) from a different locations and tags file names with a hash for easy versioning and aggressive caching.
CodeRabbit: AI Code Reviews for Developers
Do you think we are missing an alternative of go-exiftool or a related project?
README
go-exiftool
go-exiftool is a golang library that wraps ExifTool.
ExifTool's purpose is to extract and update as much metadata as possible (EXIF, IPTC, XMP, GPS, ...) from a lots of differents file types (Office documents, pictures, movies, PDF, ...).
go-exiftool uses ExifTool's stay_open
feature to optimize performance.
Requirements
go-exiftool needs ExifTool to be installed.
- On Debian :
sudo apt-get install exiftool
By default, go-exiftool
binary will look for exiftool
binary in $PATH, but another location can be specified (see SetExiftoolBinaryPath
functional option).
Usage
Metadata extraction
et, err := exiftool.NewExiftool()
if err != nil {
fmt.Printf("Error when intializing: %v\n", err)
return
}
defer et.Close()
fileInfos := et.ExtractMetadata("testdata/20190404_131804.jpg")
for _, fileInfo := range fileInfos {
if fileInfo.Err != nil {
fmt.Printf("Error concerning %v: %v\n", fileInfo.File, fileInfo.Err)
continue
}
for k, v := range fileInfo.Fields {
fmt.Printf("[%v] %v\n", k, v)
}
}
Output :
[FOV] 69.4 deg
[Orientation] Rotate 90 CW
[ColorSpace] sRGB
[Compression] JPEG (old-style)
[YCbCrSubSampling] YCbCr4:2:2 (2 1)
[Aperture] 1.7
[ColorComponents] 3
[SubSecCreateDate] 2019:04:04 13:18:03.0937
[FileSize] 26 kB
[FileAccessDate] 2019:05:17 22:44:26+02:00
[DateTimeOriginal] 2019:04:04 13:18:03
[CreateDate] 2019:04:04 13:18:03
(...)
Metadata update
See [example function ExampleExiftool_Write in exiftool_sample_test.go](exiftool_sample_test.go)
Changelog
- v1.1.0 : initial release
- v1.1.1
- v1.1.3
- add Mac & Windows support (thanks to @PROger4ever)
- increase errors readability (thanks to @PROger4ever)
- v1.2.0
- add stdout and stderr buffer configuration capabilities (thank to @asannikov)
- v1.3.0
- Add functionnal option to set ExifTool's
-charset
parameter (thank to @PROger4ever)
- Add functionnal option to set ExifTool's
- v1.3.1
- v1.3.2
- add Freebsd support (thanks to @ghyman1)
- v1.4.0
- "NoPrintConversion" functional option (thanks to Kjeldgaard)
- v1.5.0
- "ExtractEmbedded" functional option
- v1.6.0
- "ExtractAllBinaryMetadata" functional option
- v1.6.1
- "SetExiftoolBinaryPath" functional option : specify where to find exiftool binary (default : $path)
- v1.6.2
- Several improvements (thanks to Dale Hui)
- v1.7.0
- Add metadata writing capabilities (thanks to Dale Hui)