5

JuicyPixels ライブラリを使用して PNG を読み込もうとしていますが、これを正常に実行できますが、基になる画像のタイプがわかりません。ライブラリでDynamicImageは、 は次のように定義されています。

data DynamicImage =
       ImageY8   (Image Pixel8)
     | ImageYA8  (Image PixelYA8)
     | ImageRGB8 (Image PixelRGB8)
     | ImageRGBA8 (Image PixelRGBA8)
     | ImageYCbCr8 (Image PixelYCbCr8)

簡単な試行錯誤の結果、これで ImageRGBA8 であることがわかりました。

img = (\(ImageRBA8 t) -> t) dynImage

それからただやっている

imageData img

画像データを印刷するghciでは、他のすべてのタイプはエラーになります。DynamicImageでは、試行錯誤することなく、どのタイプの がロードされているかをどのように把握できますか。これは非常に単純で、何かが足りないと確信しています。

4

1 に答える 1

4

DynamicImageは単なるADTであるため、関数定義またはケース式でパターンマッチできます。使用される正確なコンストラクターは、ファイルからロードしたイメージのタイプによって異なります (したがって、この場合は RGA8 でしたが、他の場合は異なる可能性があります)。

例えば:

case img of
  ImageY8   imgPixel8   -> ... do something ...
  ImageYA8  imgPixelYA8 -> ...
  ImageRGB8 imgPixelRGB8 -> ...
  ImageRGBA8 imgPixelRGBA8 -> ...
  ImageYCbCr8 imgPixelYCbCr8 -> ...
于 2013-05-11T16:20:28.633 に答える