如何在Haskell中从计算机加载GIF图像?

时间:2019-02-26 10:59:09

标签: haskell gif io-monad gloss

我想在游戏背景中循环播放GIF图像(例如,使用Gloss Juicy或模块Codec.Picture.Gif)

设法使用这样的BMP图像:

image :: IO Picture 
image = loadBMP "image.bmp"

但是现在我要对GIF图像执行相同的操作:

loadGifFile :: FilePath -> IO Image 
loadGifFile = "image.gif"

无法正常工作。

感谢任何技巧。

1 个答案:

答案 0 :(得分:2)

您将不得不做更多的工作。 loadBMP只是将BMP文件加载到位图中,该位图是单个图像。但是,动画GIF是一种更复杂的文件格式,其中包含多个帧。 GLOSS根本不支持该功能。

您可以使用JuicyPixels解码GIF文件,然后编写一些代码将其转换为GLOSS位图列表。然后使用animate依次绘制这些图像。