arrays - 哪个 haskell 库可以让我将 2D 数组/向量保存到 png/jpg/gif... 文件中?

标签 arrays haskell image-processing multicore

我正在玩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)

这是图像:

t.pgm

否则你可以使用 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/

相关文章:

java - 填充二维数组的最后 n 个元素

java - 对数组进行快速排序并在 Java 中进行二进制搜索

java - 将 LocalDate 列表保存到数组[][]

haskell - 如何在 ghci 中返回 prelude>

haskell - ccall 和 capi FFI 调用约定之间的差异

python - 基于python列表中的另一个变量(使唯一)对变量中的条目求和

opencv - 如何使用opencv python中的边缘检测返回边缘数?

java - 使用java在openCV中使用Mat

flann knnmatch 中的 OpenCV 错误

haskell - 为什么 Haskell 在读取 Num 时似乎默认读取 Int?