Safe Haskell | None |
---|
Module used for loading & writing 'Portable Network Graphics' (PNG) files. The API has two layers, the high level, which load the image without looking deeply about it and the low level, allowing access to data chunks contained in the PNG image.
For general use, please use decodePng
function.
The loader has been validated against the pngsuite (http:www.libpng.orgpubpng/pngsuite.html)
- class PngSavable a where
- encodePng :: Image a -> ByteString
- decodePng :: ByteString -> Either String DynamicImage
- writePng :: PngSavable pixel => FilePath -> Image pixel -> IO ()
- encodePalettedPng :: Palette -> Image Pixel8 -> Either String ByteString
- encodeDynamicPng :: DynamicImage -> Either String ByteString
- writeDynamicPng :: FilePath -> DynamicImage -> IO (Either String Bool)
High level functions
class PngSavable a whereSource
Encode an image into a png if possible.
encodePng :: Image a -> ByteStringSource
Transform an image into a png encoded bytestring, ready to be written as a file.
decodePng :: ByteString -> Either String DynamicImageSource
Transform a raw png image to an image, without modifying the underlying pixel type. If the image is greyscale and < 8 bits, a transformation to RGBA8 is performed. This should change in the future. The resulting image let you manage the pixel types.
This function can output the following pixel types :
- PixelY8
- PixelY16
- PixelYA8
- PixelYA16
- PixelRGB8
- PixelRGB16
- PixelRGBA8
- PixelRGBA16
writePng :: PngSavable pixel => FilePath -> Image pixel -> IO ()Source
Helper function to directly write an image as a png on disk.
encodePalettedPng :: Palette -> Image Pixel8 -> Either String ByteStringSource
Encode a paletted image as a color indexed 8-bit PNG. the palette must have between 1 and 256 values in it.
encodeDynamicPng :: DynamicImage -> Either String ByteStringSource
Encode a dynamic image in bmp if possible, supported pixel type are :
- Y8
- Y16
- YA8
- YA16
- RGB8
- RGB16
- RGBA8
- RGBA16
writeDynamicPng :: FilePath -> DynamicImage -> IO (Either String Bool)Source
Write a dynamic image in a .png image file if possible. The same restriction as encodeDynamicPng apply.