imagemeta

package module
v0.3.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 5, 2023 License: MIT Imports: 14 Imported by: 8

README

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

  • Stabilize ImageTypes API
  • Add Exif parsing for individual image types (jpg, heic, cr2, tiff, dng)
  • Add CR3 and Heic image metadata support.
  • Add Avif image metadata support
  • Add Canon Exif Makernote support
  • Add Nikon Exif Makernote support
  • Add Camera Make and Model Lookup tables
  • Add Preview Image extraction
  • Refactor XMP parsing as "xmp" package
  • Stabalize Imagemeta API
  • Improve test coverage
  • Add Webp image metadata support
  • Add CRW image metadata support (ciff format images)
  • Documentation

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

Documentation

Overview

Package imagemeta provides functions for parsing and extracting Metadata from Images. Different image types such as JPEG, Camera Raw, DNG, TIFF, HEIF, and AVIF.

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNoExif               = meta.ErrNoExif
	ErrNoExifDecodeFn       = errors.New("error no Exif Decode Func set")
	ErrNoXmpDecodeFn        = errors.New("error no Xmp Decode Func set")
	ErrImageTypeNotFound    = imagetype.ErrImageTypeNotFound
	ErrMetadataNotSupported = errors.New("error metadata reading not supported for this imagetype")
)

Errors

Functions

func Decode added in v0.2.0

func Decode(r io.ReadSeeker) (exif2.Exif, error)

func DecodeCR2 added in v0.2.0

func DecodeCR2(r io.ReadSeeker) (exif2.Exif, error)

DecodeCR2 decodes a CR2 file from an io.Reader returning Exif or an error.

func DecodeCR3 added in v0.2.0

func DecodeCR3(r io.ReadSeeker) (exif2.Exif, error)

DecodeCR3 decodes a CR3 file from an io.Reader returning Exif or an error.

func DecodeHeif added in v0.2.0

func DecodeHeif(r io.ReadSeeker) (exif2.Exif, error)

DecodeHeif decodes a Heif file from an io.Reader returning Exif or an error. Needs improvement

func DecodeJPEG added in v0.2.0

func DecodeJPEG(r io.ReadSeeker) (exif2.Exif, error)

DecodeJPEG decodes a JPEG file from an io.Reader returning Exif or an error.

func DecodePng added in v0.2.0

func DecodePng(r io.ReadSeeker) (exif2.Exif, error)

DecodePng decodes a PNG file from an io.Reader returning Exif or an error.

func DecodeTiff added in v0.2.0

func DecodeTiff(r io.ReadSeeker) (exif2.Exif, error)

DecodeTiff decodes a Tiff/DNG file from an io.Reader returning Exif or an error.

func SetLogger added in v0.2.0

func SetLogger(w io.Writer, level zerolog.Level)

Types

This section is empty.

Directories

Path Synopsis
ifds
Package ifds provides types and functions for decoding tiff Ifds
Package ifds provides types and functions for decoding tiff Ifds
ifds/exififd
Package exififd provides types for "RootIfd/ExifIfd"
Package exififd provides types for "RootIfd/ExifIfd"
ifds/gpsifd
Package gpsifd provides types for "RootIfd/GPSIfd"
Package gpsifd provides types for "RootIfd/GPSIfd"
tag
Package tag provides types and functions for decoding Exif Tags
Package tag provides types and functions for decoding Exif Tags
Package imagehash processes a Perception hash and Average hash from an image.
Package imagehash processes a Perception hash and Average hash from an image.
transforms
Package transforms provides the transformations for imagehash
Package transforms provides the transformations for imagehash
transforms32
Package transforms32 contains DCT transformations
Package transforms32 contains DCT transformations
Package imagetype provides types and functions for identifying Image document types
Package imagetype provides types and functions for identifying Image document types
gen
Package jpeg reads metadata information (Exif and XMP) from a JPEG Image.
Package jpeg reads metadata information (Exif and XMP) from a JPEG Image.
Package meta contains meta types for image metadata
Package meta contains meta types for image metadata
canon
Package canon provides data types and functions for representing Canon Camera Makernote values
Package canon provides data types and functions for representing Canon Camera Makernote values
Package png reads PNG Header metadata information from image files before being processed by exif package
Package png reads PNG Header metadata information from image files before being processed by exif package
Package tiff reads Tiff Header metadata information from image files before being processed by exif package
Package tiff reads Tiff Header metadata information from image files before being processed by exif package
xmp
Package xmp provides functions for decoding .xmp sidecar files and XMP embedded within image files
Package xmp provides functions for decoding .xmp sidecar files and XMP embedded within image files
cmd
xmpns
Package xmpns provides XMP Namespace information
Package xmpns provides XMP Namespace information

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL