JuicyPixels-3.2.9.1: Picture loading/serialization (in png, jpeg, bitmap, gif, tga, tiff and radiance)

Safe HaskellNone
LanguageHaskell2010

Codec.Picture.Metadata

Contents

Description

This module expose a common "metadata" storage for various image type. Different format can generate different metadatas, and write only a part of them.

Since version 3.2.5

Synopsis

Types

data Metadatas Source #

Dependent storage used for metadatas. All metadatas of a given kind are unique within this container.

The current data structure is based on list, so bad performances can be expected.

data Keys a where Source #

Store various additional information about an image. If something is not recognized, it can be stored in an unknown tag.

  • DpiX Dot per inch on this x axis.
  • DpiY Dot per inch on this y axis.
  • Width Image width in pixel. Relying on the metadata for this information can avoid the full decompression of the image. Ignored for image writing.
  • Height Image height in pixels. Relyiung on the metadata for this information can void the full decomrpession of the image. Ignored for image writing.
  • Unknown unlikely to be decoded, but usefull for metadata writing
  • Exif Exif tag and associated data.

Instances

Eq (Keys a) Source # 

Methods

(==) :: Keys a -> Keys a -> Bool #

(/=) :: Keys a -> Keys a -> Bool #

Show (Elem Keys) Source # 
Show (Keys a) Source # 

Methods

showsPrec :: Int -> Keys a -> ShowS #

show :: Keys a -> String #

showList :: [Keys a] -> ShowS #

NFData (Elem Keys) Source # 

Methods

rnf :: Elem Keys -> () #

data Value Source #

Encode values for unknown information

Constructors

Int !Int 
Double !Double 
String !String 

Instances

Eq Value Source # 

Methods

(==) :: Value -> Value -> Bool #

(/=) :: Value -> Value -> Bool #

Show Value Source # 

Methods

showsPrec :: Int -> Value -> ShowS #

show :: Value -> String #

showList :: [Value] -> ShowS #

NFData Value Source # 

Methods

rnf :: Value -> () #

data Elem k Source #

Element describing a metadata and it's (typed) associated value.

Constructors

(Show a, NFData a) => !(k a) :=> a 

Instances

Show (Elem Keys) Source # 
NFData (Elem Keys) Source # 

Methods

rnf :: Elem Keys -> () #

Functions

lookup :: Keys a -> Metadatas -> Maybe a Source #

Search a metadata with the given key.

empty :: Metadatas Source #

Empty metadatas. Favor mempty

insert :: (Show a, NFData a) => Keys a -> a -> Metadatas -> Metadatas Source #

Insert an element in the metadatas, if an element with the same key is present, it is overwritten.

delete :: Keys a -> Metadatas -> Metadatas Source #

Remove an element of the given keys from the metadatas. If not present does nothing.

singleton :: (Show a, NFData a) => Keys a -> a -> Metadatas Source #

Create metadatas with a single element.

Folding

foldl' :: (acc -> Elem Keys -> acc) -> acc -> Metadatas -> acc Source #

Strict left fold of the metadatas

foldMap :: Monoid m => (Elem Keys -> m) -> Metadatas -> m Source #

foldMap equivalent for metadatas.

Helper functions

mkDpiMetadata :: Word -> Metadatas Source #

Create metadatas indicating the resolution, with DpiX == DpiY

mkSizeMetadata :: Integral n => n -> n -> Metadatas Source #

Create metadatas holding width and height information.

basicMetadata :: Integral nSize => SourceFormat -> nSize -> nSize -> Metadatas Source #

Create simple metadatas with Format, Width & Height

simpleMetadata :: (Integral nSize, Integral nDpi) => SourceFormat -> nSize -> nSize -> nDpi -> nDpi -> Metadatas Source #

Create simple metadatas with Format, Width, Height, DpiX & DpiY

extractExifMetas :: Metadatas -> [(ExifTag, ExifData)] Source #

Extract all Exif specific metadatas

Conversion functions

dotsPerMeterToDotPerInch :: Word -> Word Source #

Conversion from dpm to dpi

dotPerInchToDotsPerMeter :: Word -> Word Source #

Conversion from dpi to dpm

dotsPerCentiMeterToDotPerInch :: Word -> Word Source #

Conversion dpcm -> dpi