helpers

package
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: Jan 23, 2026 License: GPL-3.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DetermineEndianess

func DetermineEndianess(data []byte, offset int) (binary.ByteOrder, error)

func ExtractExtXMPData

func ExtractExtXMPData(data []byte, extId string) (string, error)

func ExtractXMPData

func ExtractXMPData(data []byte) (string, error)

func FormatExposureTime

func FormatExposureTime(num, den uint32) string

func ParseColourSpace

func ParseColourSpace(raw uint16) string

func ParseComponentsConfiguration

func ParseComponentsConfiguration(components []uint8) string

func ParseCompositeImage

func ParseCompositeImage(raw uint16) string

func ParseExposureProgram

func ParseExposureProgram(raw uint16) string

func ParseFileSource

func ParseFileSource(raw uint8) string

func ParseFlashValue

func ParseFlashValue(raw uint16) string

func ParseLightSource

func ParseLightSource(raw uint16) string

func ParseMeteringMode

func ParseMeteringMode(raw uint16) string

func ParseOrientationValue

func ParseOrientationValue(raw uint16) string

func ParseProcessing

func ParseProcessing(raw uint16) string

ParseProcessing for Contrast, Saturation, and Sharpness

func ParseSceneType

func ParseSceneType(raw uint16) string

func ParseSubjectDistanceRange

func ParseSubjectDistanceRange(raw uint16) string

func SanitizeBase64String

func SanitizeBase64String(s string) string

func SanitizeXMLString

func SanitizeXMLString(s string) string

Types

type AuthenticityData

type AuthenticityData struct {
	ImageUniqueID    string        `json:"imageUniqueID"`
	MakerNote        MakerNoteData `json:"makerNote"`
	RelatedSoundFile string        `json:"relatedSoundFile"`
}

AuthenticityData Authenticity and integrity markers

type AuthorshipData

type AuthorshipData struct {
	Artist           string `json:"artist"`
	Copyright        string `json:"copyright"`
	ImageDescription string `json:"imageDescription"`
	XPTitle          string `json:"xpTitle"`
	XPComment        string `json:"xpComment"`
	XPAuthor         string `json:"xpAuthor"`
	XPKeywords       string `json:"xpKeywords"`
	XPSubject        string `json:"xpSubject"`
	UserComment      string `json:"userComment"`
}

AuthorshipData Authorship and chain of custody

type CameraSettings

type CameraSettings struct {
	ExposureTime         string  `json:"exposureTime"`
	FNumber              float64 `json:"fNumber"`
	ExposureProgram      string  `json:"exposureProgram"`
	ISO                  int     `json:"iso"`
	FocalLength          float64 `json:"focalLength"`
	MeteringMode         string  `json:"meteringMode"`
	LightSource          string  `json:"lightSource"`
	FlashFired           string  `json:"flashFired"`
	WhiteBalance         string  `json:"whiteBalance"`
	SceneCaptureType     string  `json:"sceneCaptureType"`
	SubjectDistanceRange string  `json:"subjectDistanceRange"`
}

CameraSettings Camera settings used during capture

type ContainerItem

type ContainerItem struct {
	Mime     string `xml:"Mime,attr"`
	Semantic string `xml:"Semantic,attr"`
	Length   int    `xml:"Length,attr,omitempty"`
}

type DeviceData

type DeviceData struct {
	Make             string `json:"make"`
	Model            string `json:"model"`
	BodySerialNumber string `json:"bodySerialNumber"`
	SerialNumber     string `json:"serialNumber"`
	CameraFirmware   string `json:"cameraFirmware"`
	LensInfo         string `json:"lensInfo"`
	LensMake         string `json:"lensMake"`
	LensModel        string `json:"lensModel"`
	LensSerialNumber string `json:"lensSerialNumber"`
}

DeviceData Device identification data

type GPSExif

type GPSExif struct {
	Version              string    `json:"version"`
	Altitude             float64   `json:"altitude"`
	Latitude             float64   `json:"latitude"`
	Longitude            float64   `json:"longitude"`
	Timestamp            time.Time `json:"timestamp"`
	Speed                string    `json:"speed"`
	Direction            string    `json:"direction"`
	MapDatum             string    `json:"mapDatum"`
	DestinationLatitude  float64   `json:"destinationLatitude"`
	DestinationLongitude float64   `json:"destinationLongitude"`
	DestinationBearing   string    `json:"destinationBearing"`
	DestinationDistance  string    `json:"destinationDistance"`
	ProcessingMethod     string    `json:"processingMethod"`
	Differential         string    `json:"differential"`
}

type IFDEntry

type IFDEntry struct {
	Tag         Tag
	DataType    uint16
	Count       uint32
	ValueOffset uint32
}

func ParseIFDEntry

func ParseIFDEntry(data []byte, offset int, endian binary.ByteOrder) IFDEntry

type ImageProperties

type ImageProperties struct {
	Width            int     `json:"width"`
	Height           int     `json:"height"`
	PixelXDimension  float64 `json:"pixelXDimension"`
	PixelYDimension  float64 `json:"pixelYDimension"`
	Orientation      string  `json:"orientation"`
	ColorSpace       string  `json:"colorSpace"`
	ComponentsConfig string  `json:"componentsConfiguration"`
	FileSource       string  `json:"fileSource"`
	SceneType        string  `json:"sceneType"`
	ExifVersion      string  `json:"exifVersion"`
	FlashpixVersion  string  `json:"flashpixVersion"`
}

ImageProperties Image dimensions and properties

type MakerNoteData

type MakerNoteData struct {
	Raw          []byte                 `json:"raw"`
	Manufacturer string                 `json:"manufacturer"`
	Parsed       map[string]interface{} `json:"parsed"`
}

type PhotoExifEvidence

type PhotoExifEvidence struct {
	Temporal     TemporalData     `json:"temporal"`
	GPS          GPSExif          `json:"gps"`
	Device       DeviceData       `json:"device"`
	Image        ImageProperties  `json:"image"`
	Camera       CameraSettings   `json:"camera"`
	Processing   ProcessingData   `json:"processing"`
	Authorship   AuthorshipData   `json:"authorship"`
	Authenticity AuthenticityData `json:"authenticity"`
}

type ProcessingData

type ProcessingData struct {
	Software            string  `json:"software"`
	ProcessingSoftware  string  `json:"processingSoftware"`
	ImageEditor         string  `json:"imageEditor"`
	DigitalZoomRatio    float64 `json:"digitalZoomRatio"`
	Contrast            string  `json:"contrast"`
	Saturation          string  `json:"saturation"`
	Sharpness           string  `json:"sharpness"`
	CompositeImage      string  `json:"compositeImage"`
	CompositeImageCount string  `json:"compositeImageCount"`
}

ProcessingData Post-processing and manipulation indicators

type Tag

type Tag uint16

type TemporalData

type TemporalData struct {
	DateCaptured        time.Time `json:"dateCaptured"`
	CreateDate          time.Time `json:"createDate"`
	ModifyDate          time.Time `json:"modifyDate"`
	SubSecTime          string    `json:"subSecTime"`
	SubSecTimeOriginal  string    `json:"subSecTimeOriginal"`
	SubSecTimeDigitized string    `json:"subSecTimeDigitized"`
	OffsetTime          string    `json:"offsetTime"`
	OffsetTimeOriginal  string    `json:"offsetTimeOriginal"`
	OffsetTimeDigitized string    `json:"offsetTimeDigitized"`
}

TemporalData Temporal evidence with full precision

type ValueExtractor

type ValueExtractor struct {
	Data      []byte
	TiffStart int
	Endian    binary.ByteOrder
}

func (*ValueExtractor) DecodeXMPMeta

func (e *ValueExtractor) DecodeXMPMeta(inXml []byte) XmpMeta

func (*ValueExtractor) GetByteArray

func (e *ValueExtractor) GetByteArray(entry IFDEntry, entryOffset int) []byte

func (*ValueExtractor) GetCompositeImageCount

func (e *ValueExtractor) GetCompositeImageCount(entry IFDEntry, entryOffset int) (uint16, uint16)

func (*ValueExtractor) GetGPSCoord

func (e *ValueExtractor) GetGPSCoord(entry IFDEntry) float64

func (*ValueExtractor) GetRational

func (e *ValueExtractor) GetRational(entry IFDEntry, nestedOffset int, signed bool) float64

func (*ValueExtractor) GetRationalParts

func (e *ValueExtractor) GetRationalParts(entry IFDEntry, nestedOffset int) (uint32, uint32)

func (*ValueExtractor) GetString

func (e *ValueExtractor) GetString(entry IFDEntry, entryOffset int) string

func (*ValueExtractor) GetUTF16LEString

func (e *ValueExtractor) GetUTF16LEString(entry IFDEntry, entryOffset int) string

func (*ValueExtractor) GetUint16

func (e *ValueExtractor) GetUint16(entryOffset int) uint16

func (*ValueExtractor) GetUint32

func (e *ValueExtractor) GetUint32(entryOffset int) uint32

func (*ValueExtractor) GetUint32Array

func (e *ValueExtractor) GetUint32Array(entry IFDEntry, count int) []uint32

func (*ValueExtractor) GetUint8

func (e *ValueExtractor) GetUint8(entryOffset int) uint8

func (*ValueExtractor) GetUint8Array

func (e *ValueExtractor) GetUint8Array(entryOffset, numSlices int) []uint8

func (*ValueExtractor) GetUserComment

func (e *ValueExtractor) GetUserComment(entry IFDEntry, entryOffset int) string

func (*ValueExtractor) GetVersion

func (e *ValueExtractor) GetVersion(entry IFDEntry, entryOffset int) string

type XmpMeta

type XmpMeta struct {
	XMLName xml.Name `xml:"xmpmeta"`
	RDF     struct {
		XMLName     xml.Name `xml:"RDF"`
		Description struct {
			XMLName          xml.Name `xml:"Description"`
			Version          string   `xml:"Version,attr"`
			HasExtendedXMP   string   `xml:"HasExtendedXMP,attr"`
			HdrPlusMakerNote string   `xml:"HdrPlusMakernote,attr"`
			Directory        struct {
				XMLName  xml.Name `xml:"Directory"`
				Sequence struct {
					XMLName xml.Name `xml:"Seq"`
					Items   []struct {
						XMLName       xml.Name      `xml:"li"`
						ParseType     string        `xml:"parseType,attr"`
						ContainerItem ContainerItem `xml:"Item"`
					} `xml:"li"`
				} `xml:"Seq"`
			} `xml:"Directory"`
		} `xml:"Description"`
	} `xml:"RDF"`
}

Jump to

Keyboard shortcuts

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