我正在玩哈斯克尔,从简单的绘图程序开始,以弄湿我的脚。我需要一个库,可以让我将 2D 数组/向量保存到图像文件中。我不想写颜色列表。我想使用用于数组/向量之类的计算的容器,并且可以(嗯,almost)自动并行化。
EDIT存储彩色图像的能力是必须的。
我会开始PGM图书馆。这是一种非常简单的未压缩灰度图格式。几乎没有额外的依赖。您可以使用 ImageMagick 或其他工具将 PGM 转换为其他格式。
PGM 支持通用IArray
接口,并且应该与大多数标准 Haskell 数组一起使用。您可以轻松地并行化数组计算Control.Parallel.Strategies.
PGM 使用示例:
ghci> :m + Data.Array Graphics.Pgm
ghci> let a = accumArray (+) 0 ((0::Int,0::Int),(127,127)) [ ((i,i), 1.0::Double) | i <- [0..127] ]
ghci> arrayToFile "t.pgm" (fmap round a)
这是图像:
否则你可以使用编解码器-图像-DevIL它可以将未装箱的数组保存为许多图像格式。你需要DevIL图书馆也是。并且您需要将所有数组转换为它们的特定类型(UArray (Int, Int, Int) Word8
).
最后,如果你想要前沿,你可以考虑repa
并行数组和相应的repa-io
库,可以编写它们转换为 BMP 图像。不幸的是,今天repa
尚无法使用新的 GHC 7.0.2 进行构建,并且在旧的 GHC 6.12 上不具有性能优势。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)