evanoberholster / imagemeta

Image Metadata (Exif and XMP) extraction for JPEG, HEIC, AVIF, TIFF and Camera Raw in golang. Focus is on providing features and improved performance.
MIT License
116 stars 12 forks source link
cr3 exif exiftool go golang heic image imagetype metadata xmp

Imagemeta

License Godoc ReportCard Coverage Status Build

Image Metadata (Exif and XMP) extraction for JPEG, HEIC, AVIF, TIFF, and Camera Raw in golang. Imagetype identifcation. Zero allocation Perceptual Image Hash. Goal is features that are precise and performance oriented for working with images.

Documentation

See Documentation for more information.

Example Usage

Example usage:

    package main

    import (
        "fmt"
        "os"

        "github.com/evanoberholster/imagemeta"
    )

    f, err := os.Open("image.jpg")
    if err != nil {
        panic(err)
    }
    defer f.Close()

    e, err := imagemeta.Decode(f)
    if err != nil {
        panic(err)
    }
    fmt.Println(e)

Imagehash

Zero allocation PerceptualHash algorithm (64Bit and 256Bit) github.com/evanoberholster/imagemeta/imagehash. Adapted from https://github.com/corona10/goimagehash. Image will need to be resized to 64x64 prior to image hashing.

Contributing

Issues, Suggestions and Pull Requests are welcome.

Benchmarks

See BENCHMARK.md To run your own benchmarks see bench_test.go

Imagetype Identification

Images can be identified with: "github.com/evanoberholster/imagemeta/imagetype" package.

TODO

Based on and Inspired by

Inspired by Phil Harvey http://exiftool.org, go-exif https://github.com/dsoprea/go-exif, and RW Carlsen https://github.com/rwcarlsen/goexif

Special Thanks to:

Contributors

LICENSE

Copyright (c) 2020-2023, Evan Oberholster & Contributors