packages feed

friday-scale-dct-1.0.0.0: example/Example.hs

module Main where

import           Codec.Picture                   (DynamicImage (..), readImage,
                                                  writePng)
import           Codec.Picture.RGBA8             (fromDynamicImage)
import           Data.Time                       (diffUTCTime, getCurrentTime)
import           Vision.Image.Transform.ScaleDCT (scale)

import           Vision.Image.JuicyPixels

main :: IO ()
main = do
    start <- getCurrentTime
    Right dimg <- readImage "phadej.png"
    let img = fromDynamicImage dimg
    let avasmall = scale (64, 64) (toFridayRGBA img)
    let avalarge = scale (600, 600) (toFridayRGBA img)
    let avahuge  = scale (1200, 1200) (toFridayRGBA img)
    writePng "bio-small.png" (toJuicyRGBA avasmall)
    writePng "bio-large.png" (toJuicyRGBA avalarge)
    writePng "bio-huge.png"  (toJuicyRGBA avahuge)
    end <- getCurrentTime
    print $ end `diffUTCTime` start


showType :: DynamicImage  -> String
showType dimg = case dimg of
    ImageY8 _ -> "ImageY8"
    ImageY16 _ -> "ImageY16"
    ImageYF _ -> "ImageYF"
    ImageYA8 _ -> "ImageYA8"
    ImageYA16 _ -> "ImageYA16"
    ImageRGB8 _ -> "ImageRGB8"
    ImageRGB16 _ -> "ImageRGB16"
    ImageRGBF _ -> "ImageRGBF"
    ImageRGBA8 _ -> "ImageRGBA8"
    ImageRGBA16 _ -> "ImageRGBA16"
    ImageYCbCr8 _ -> "ImageYCbCr8"
    ImageCMYK8 _ -> "ImageCMYK8"
    ImageCMYK16 _ -> "ImageCMYK16"