JuicyPixels-3.2.8: 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

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

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

data Value

Encode values for unknown information

Constructors

Int !Int 
Double !Double 
String !String 

Instances

data Elem k

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

Constructors

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

Instances

data SourceFormat

Type describing the original file format of the ilfe.

Functions

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

Search a metadata with the given key.

empty :: Metadatas

Empty metadatas. Favor mempty

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

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

delete :: Keys a -> Metadatas -> Metadatas

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

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

Create metadatas with a single element.

Folding

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

Strict left fold of the metadatas

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

foldMap equivalent for metadatas.

Helper functions

mkDpiMetadata :: Word -> Metadatas

Create metadatas indicating the resolution, with DpiX == DpiY

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

Create metadatas holding width and height information.

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

Create simple metadatas with Format, Width & Height

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

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

Conversion functions

dotsPerMeterToDotPerInch :: Word -> Word

Conversion from dpm to dpi

dotPerInchToDotsPerMeter :: Word -> Word

Conversion from dpi to dpm

dotsPerCentiMeterToDotPerInch :: Word -> Word

Conversion dpcm -> dpi