首页 > 解决方案 > 如何在 Haskell 中从计算机加载 GIF 图像?

问题描述

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

设法使用这样的 BMP 图像:

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

但现在我想对 GIF 图像做同样的事情:

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

无法让它工作。

感谢任何提示如何做到这一点。

标签: haskellgifio-monadgloss

解决方案


你将不得不做更多的工作。loadBMP只需将 BMP 文件加载到位图中,这是单个图像。然而,动画 GIF 是一种更复杂的文件格式,其中包含多个帧。GLOSS 根本不支持开箱即用。

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


推荐阅读