Features • Download • Demo • Usage • Future • Configuration • Credit
Lightweight Opensource Exif Analytic Backend written in Golang, with binary size < 15MB.
Support Restfull API, WebUI, x86, ARM, Linux, macOS.
- 🏎️ Utilized fastest and wildly used EXIF Javascript lib.
- 📷 Files: .jpg, .tif, .png, .heic, .avif, .iiq
- 📑 Reads only first few bytes for a given url or image data.
- 🗜️ Easy to deploy: one cross-platform binary file or docker to deploy.
- Lightweight cache / persistent storage by sqlite.
Download the binaries for your system and architecture from the releases page.
If you use docker, you can use the following command (Dockerhub)
docker pull lovecho/exif-web:latest
You can also check the live demo here exif.gotool.tech
Use default parameters launch the api server:
./exif-web
After start exif-web
, open the webui at localhost:8080, then
- upload you local image
- or parse remote image by Restful API
Parse a remote image with its uri
curl 'http://127.0.0.1:8080/api/v1/parse?url=$IMAGE_URL'
There is no difference between using parameters in Docker and the above, for example, we start a Web UI formatting tool service in Docker:
docker run --rm -it -p 8080:8080 lovecho/exif-web:latest
You can find the docker-compose.yml
file at docker/docker-compose.yml in project.
Feel free to customise it.
Install dependency
go get github.com/zjc17/exif-web
package main
import (
"fmt"
"github.com/zjc17/exif-web/pkg/fetcher"
"github.com/zjc17/exif-web/pkg/parser"
)
func main() {
url := ""
image, _ := fetcher.GetImagePartial(url, nil)
p := parser.NewParser()
result, _ := p.Parse(image)
fmt.Printf("%+v", result)
}
- Support read image on local filesystem
- A simple web ui as live demo
- A simple built-in k/v caching system to prevent duplication of parsing
Environment variables:
Name | Default | Description |
---|---|---|
EXIF_WEB_SQLITE_PATH | /tmp/exif-web.sqlite3 |
sqlite file path |
Exif parse components:
- exifr: The fastest and most versatile JavaScript EXIF reading library, under [MIT license]
- modified javascript version for golang execution, under [Apache-2.0 license], 28/04/2023:
- allow running in golang
- https://github.com/zjc17/exif-web
Runtime dependent components:
- goja: ECMAScript 5.1(+) implementation in Go, under [MIT license].
Web components:
- Gin: a HTTP web framework written in Go (Golang), under [MIT license]
WebUI components:
- Crayons: A UI Kit comprising of web components for building Freshworks Apps! - [License not specified yet]