module Hakyll.Images.Common ( Image
, ImageFormat
, fromExt
, loadImage
, encode
) where
import Prelude hiding (readFile)
import Codec.Picture.Types (DynamicImage)
import Codec.Picture.Saving
import Data.ByteString.Lazy (toStrict)
import Data.ByteString (ByteString)
import Hakyll.Core.Compiler (Compiler, getResourceLBS)
import Hakyll.Core.Item (Item(..))
type Image = ByteString
data ImageFormat
= Jpeg
| Png
| Bitmap
| Tiff
loadImage :: Compiler (Item Image)
loadImage = fmap toStrict <$> getResourceLBS
fromExt :: String -> ImageFormat
fromExt ".jpeg" = Jpeg
fromExt ".jpg" = Jpeg
fromExt ".png" = Png
fromExt ".bmp" = Bitmap
fromExt ".tif" = Tiff
fromExt ".tiff" = Tiff
fromExt ext = error $ "Unsupported format: " <> ext
encode :: ImageFormat -> DynamicImage -> Image
encode Jpeg = toStrict . imageToJpg 100
encode Png = toStrict . imageToPng
encode Bitmap = toStrict . imageToBitmap
encode Tiff = toStrict . imageToTiff