要gloss, juicypixels-repa
glossLoadImage.hs
import Graphics.Gloss.Data.Picture
import Codec.Picture.Repa
import Data.Array.Repa as R hiding (map)
import qualified Data.Array.Repa.Repr.ForeignPtr as RF
loadImage :: FilePath -> IO Picture
loadImage path = do
img <- imgData <$> either error id <$> readImageRGBA path
let Z :. h :. w :. _ = R.extent img
return $! bitmapOfForeignPtr w h (RF.toForeignPtr $ flipVertically img) True
-- Data.Array.Repa.extractを用いて一部を切り抜くこともできる