gpt4 book ai didi

haskell - 如何将图像加载到列表中?

转载 作者:行者123 更新时间:2023-12-02 12:22:20 25 4
gpt4 key购买 nike

我正在使用 Haskell 并尝试编写一个函数

loadImage :: FilePath -> IO [RGBAPixel]
loadImage = ...
type RBGAPixel = (Double, Double, Double, Double)

我意识到列表并不是最有效的方法 - 但我只是想暂时将一些东西塞进我现有的结构中。在 Haskell 中将图像(.jpg、.bmp、.png 或 .tga)加载到列表中的最简单方法是什么?

最佳答案

使用JuicyPixels-repa这很简单,不需要任何外部 (C) 库:

import Codec.Picture.Repa (readImageRGBA, collapseColorChannel)
import Data.Array.Repa as R
import Data.Word

loadImage :: FilePath -> IO [(Word8,Word8,Word8,Word8)]
loadImage fp = do
img <- either error return =<< readImageRGBA fp
let arr = collapseColorChannel img
return $ R.toList arr

或者采用更无点的风格:

loadImage = fmap (R.toList . collapseColorChannel . either error id) . readImageRGBA

(请注意,所有这些代码都是键入的,未经测试。如有任何问题,请随时提出)

广告的真相:我维护 JP-repa。

关于haskell - 如何将图像加载到列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21652565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com