我正在玩haskell,从简单的绘图程序开始弄湿我的脚。我需要一个库,可以让我将二维数组/向量保存到图像文件中。我不想写颜色列表。我想使用用于数组/向量之类的计算并且可以(嗯,几乎)自动并行化的容器。
编辑 存储彩色图像的能力是必须的。
最佳答案
我将从 PGM 开始图书馆。这是一种非常简单的未压缩灰度图格式。几乎没有额外的依赖。您可以使用 ImageMagick 或其他工具将 PGM 转换为其他格式。
PGM 支持通用 IArray
接口(interface),并且应该与大多数标准 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)
这是图像:
否则你可以使用 Codec-Image-DevIL它可以将未装箱的数组保存为许多图像格式。您需要 DevIL图书馆也是。您需要将所有数组转换为它们的特定类型(
UArray (Int, Int, Int) Word8
)。最后,如果你想要最前沿,你可以考虑
repa
并行数组和相应的repa-io
库,可以写它们to BMP images .不幸的是,今天repa
尚不能使用新的 GHC 7.0.2 构建,并且不会在旧 GHC 6.12 上提供性能优势。
关于arrays - 哪个 haskell 库可以让我将 2D 数组/向量保存到 png/jpg/gif... 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5191329/