Copyright | (C) 2015 Oleg Grenrus, 2015 Alex Mason |
---|---|
License | BSD3 |
Maintainer | Alex Mason <axman6@gmail.com> |
Safe Haskell | None |
Language | Haskell2010 |
Scale pictures using Discrete Cosine Transform.
- scale :: (ImagePixel i ~ pix, PixelChannel pix ~ pixChan, Integral pixChan, Pixel pix, Storable pixChan, Image i) => (Int, Int) -> i -> Manifest (ImagePixel i)
Documentation
:: (ImagePixel i ~ pix, PixelChannel pix ~ pixChan, Integral pixChan, Pixel pix, Storable pixChan, Image i) | |
=> (Int, Int) | Output width, height |
-> i | Input image |
-> Manifest (ImagePixel i) | Output image |
scales the image scale
(w,h) imgimg
to size w * h
.
It is unlikely to do the right thing for "non-linear" colour spaces, such as HSV, where hue is an angle.
In future versions there may be a class to restrict this function to only working on "linear" pixel types.
pix
is the type of pixels in the image (see ImagePixel
),
pixChan
is the underlying (Integral) pixel component type, ie Word8
, Word16
(see PixelChannel
).
Future versions will support scaling floating point images with Float
and Double
channels.
Example types for this function:
scale :: (Int,Int) -> Manifest RGBAPixel -> Manifest RGBAPixel scale :: (Int,Int) -> Delayed RGBPixel -> Manifest RGBPixel
Here pix
is, for example, RGBAPixel
, with pixChan
being Word8
Some assumptions are made about the pix
type, particularly that if pix
is made up of channels of type pixChan
, then they are stored directly next to
each other by pix
's Storable
instance. If this is not the case, then the
resulting image may produce garbage results. This should not be an issue for all
of the friday
pixel types.