gpt4 book ai didi

haskell - 如何使用 JuicyPixel 加载图像?

转载 作者:行者123 更新时间:2023-12-01 00:54:56 25 4
gpt4 key购买 nike

Haskell 的 JuicyPixel 库有一个加载函数 png图像,readPng .问题是这个函数返回一个 Either String DynamicImage类型,其中大部分库函数实际上使用 Image 类型。图书馆的文档并不清楚获得正确的正确方法是什么 Image来自 readPng 的结果.

到目前为止,这就是我所做的:

import Codec.Picture

main = do
imageLoad <- readPng "myImage.png"
case imageLoad of
Left error -> putStrLn error
Right image -> do
putStrLn "success"
case image of
ImageY8 img -> print "TODO: deal with this case."
ImageY16 img -> print "TODO: deal with this case."
ImageYF img -> print "TODO: deal with this case."
ImageYA8 img -> print "TODO: deal with this case."
ImageYA16 img -> print "TODO: deal with this case."
ImageRGB8 img -> print "TODO: deal with this case."
ImageRGB16 img -> print "TODO: deal with this case."
ImageRGBF img -> print "TODO: deal with this case."
ImageRGBA8 img -> print "TODO: deal with this case."
ImageRGBA16 img -> print "TODO: deal with this case."
ImageYCbCr8 img -> print "TODO: deal with this case."
ImageCMYK8 img -> print "TODO: deal with this case."
ImageCMYK16 img -> print "TODO: deal with this case."
print "Done."

当然,我不会手动处理所有可能的编码,所以我只是(通过反复试验)找出了我得到的图像类型(它是 ImageRGBA8)并与其部分匹配。不过,这听起来是一个非常糟糕的主意 - 这真的是必须这样做的吗,或者库是否提供了一种正确的方法来以您要求的格式加载图像?

最佳答案

好吧,转换不是免费的,因此您的选择是以您提供的任何格式对图像进行操作或进行转换。换句话说,您可以:

  • 对动态图片使用多态操作(有几个)
  • 显式销毁 DynamicImage并使用已知编码对图像进行操作。
  • 将任何编码转换为操作的单一编码。

  • 最后一个选项似乎是最直接的,并且得到了 JuicyPixels-utils 的支持。包裹。具体见 fromDynamicImagereadImageRGBA8 functions .

    关于haskell - 如何使用 JuicyPixel 加载图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28711373/

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