module Main (main) where
import Codec.Picture (convertRGBA8, readImage, writePng)
import Codec.Picture.ScaleDCT (scale)
import Data.Time (diffUTCTime, getCurrentTime)
processImage
:: String -- ^ From
-> (Int, Int) -- ^ Target size
-> String -- ^ To
-> IO ()
processImage src size dst = do
start <- getCurrentTime
eimg <- readImage src
case eimg of
Left err -> print err
Right dimg -> do
let img = convertRGBA8 dimg
let ava = scale size img
writePng dst ava
end <- getCurrentTime
putStrLn $ dst ++ ": " ++ show (end `diffUTCTime` start)
main :: IO ()
main = do
processImage "cat.jpg" (96, 64) "cat-small.png"
processImage "cat.jpg" (769, 512) "cat-large.png"
processImage "phadej.png" (64, 64) "phadej-small.png"
processImage "phadej.png" (600, 600) "phadej-large.png"