Haskell bindings to the ExifTool command-line application that enable reading, writing and deleting metadata in various file formats.
Full documentation is on Hackage. A short code example:
{-# LANGUAGE OverloadedStrings #-}
import Data.Text (Text)
import ExifTool
data Foo = Foo
{ description :: Text,
resolution :: Int
}
deriving (Show)
main :: IO ()
main = withExifTool $ \et -> do
m <- readMeta et [] "a.jpg"
print $ Foo <$> get (Tag "Description") m <*> get (Tag "XResolution") m
let m' = del (Tag "Description") . set (Tag "XResolution") (42 :: Int) $ m
writeMeta et m' "a.jpg"