Using JuicyPixels-repa , it is simple and does not require any external (C) libraries:
import Codec.Picture.Repa (readImageRGBA, collapseColorChannel)
import Data.Array.Repa as R
import Data.Word
loadImage :: FilePath -> IO [(Word8,Word8,Word8,Word8)]
loadImage fp = do
img <- either error return =<< readImageRGBA fp
let arr = collapseColorChannel img
return $ R.toList arr
Or in a quieter style:
loadImage = fmap (R.toList . collapseColorChannel . either error id) . readImageRGBA
(Please note that all of this code is printed, not verified. Feel free to scream with any problems)
True in advertising: I support JP-repa.
source
share