PNG file read and write. Leverages color.d's Image interfaces for interop.
The return value should be casted to indexed or truecolor depending on what the file is. You can also use getAsTrueColorImage to forcibly convert it if needed.
Given an input range of bytes, return a lazy PNG file
Easily reads a png file into a MemoryImage
Lazily breaks the buffered input range into png chunks, as defined in the PNG spec
Same as above, but takes a regular input range instead of a buffered one. Provided for easier compatibility with standard input ranges (for example, std.stdio.File.byChunk)
Easily reads a png from a data array into a MemoryImage.
Saves a MemoryImage to a png. See also: writeImageToPngFile which uses memory a little more efficiently
Saves an image from an existing array. Note that depth other than 8 may not be implemented yet. Also note depth of 16 must be stored big endian
All PNG files are supposed to open with these bytes according to the spec
Allows appending to front on a regular input range, if that range is an array. It appends to the array rather than creating an array of arrays; it's meant to make the illusion of one continuous front rather than simply adding capability to walk backward to an existing input range.
A PNG file consists of the magic number then a stream of chunks. This struct represents those chunks.
Lazily reads out basic info from a png (header, palette, image data) It will only allocate memory to read a palette, and only copies on the header and the palette. It ignores everything else.
The first chunk in a PNG file is a header that contains this info
* Buffered input range - generic, non-image code Is the given range a buffered input range? That is, an input range that also provides consumeFromFront(int) and appendToFront()