|Portability||Repa interface to the DevIL image loading library.|
|Maintainer||Don Stewart <email@example.com> , Raphael Javaux <firstname.lastname@example.org|
Read and write images in many formats, representing them in Haskell as a 3-dimensional repa array. Image parsing and decoding is done by the Developers Image Library, DevIL.
- Many formats are supported, including .png, .bmp, .jpg, .tif
- Image format parsing is determined by the filepath extension type.
- Only RGB, RGBA, BGR, BGRA and Greyscale images are supported.
Example: read a .png file into a repa array, and write it out as a .jpg
main = runIL $ do x <- readImage "/tmp/y.png" writeImage "/tmp/x.jpg" x
Note that as DevIL is stateful, we ensure the library is initialized by running image manipulation functions in the IL monad, a wrapper over IO that ensures the library has been initialized. It is a type error to call image functions outside of the IL monad.
The Image array type
RGBA, RGB, BGRA and BGR images are 3D repa arrays where indices are Z :. row :. column :. color channel. Grey images are 2D repa arrays.
The origin (Z :. 0 :. 0) is on the lower left point of the image.
The IL monad
The IL monad. Provides statically-guaranteed access to an initialized IL context.
Running code in the IL monad. This is a simple wrapper over IO that guarantees the DevIL library has been initialized before you run functions on it.
Reads an image into a repa array. It uses directly the C array using the repa's foreign arrays wrapper.
main = do x <- runIL $ readImage "/tmp/x.png" .. operations on x ..
Note: The image input type is determined by the filename extension.