2015-08-28 15:56:55 +00:00
|
|
|
#nimPNG
|
|
|
|
Portable Network Graphics Encoder and Decoder written in Nim
|
2015-09-03 04:56:22 +00:00
|
|
|
store lossless image with good compression
|
2015-08-28 15:56:55 +00:00
|
|
|
|
|
|
|
all PNG standard color mode are supported:
|
|
|
|
|
|
|
|
- LCT_GREY = 0, # greyscale: 1,2,4,8,16 bit
|
|
|
|
- LCT_RGB = 2, # RGB: 8,16 bit
|
|
|
|
- LCT_PALETTE = 3, # palette: 1,2,4,8 bit
|
|
|
|
- LCT_GREY_ALPHA = 4, # greyscale with alpha: 8,16 bit
|
|
|
|
- LCT_RGBA = 6 # RGB with alpha: 8,16 bit
|
|
|
|
|
|
|
|
both interlaced and non-interlaced mode supported
|
|
|
|
|
|
|
|
recognize all PNG standard chunks:
|
|
|
|
IHDR, IEND, PLTE, IDAT, tRNS, bKGD, pHYs, tIME, iTXt, zTXt
|
|
|
|
tEXt, gAMA, cHRM, sRGB, iCCP, sBIT, sPLT, hIST
|
|
|
|
|
|
|
|
unknown chunks will be handled properly
|
|
|
|
|
|
|
|
the following chunks are supported (generated/interpreted) by both encoder and decoder:
|
|
|
|
|
|
|
|
- IHDR: header information
|
|
|
|
- PLTE: color palette
|
|
|
|
- IDAT: pixel data
|
|
|
|
- IEND: the final chunk
|
|
|
|
- tRNS: transparency for palettized images
|
|
|
|
- tEXt: textual information
|
|
|
|
- zTXt: compressed textual information
|
|
|
|
- iTXt: international textual information
|
|
|
|
- bKGD: suggested background color
|
|
|
|
- pHYs: physical dimensions
|
|
|
|
- tIME: modification time
|
|
|
|
|
|
|
|
the following chunks are parsed correctly, but not used by decoder:
|
|
|
|
cHRM, gAMA, iCCP, sRGB, sBIT, hIST, sPLT
|
|
|
|
|
|
|
|
Supported color conversions:
|
|
|
|
|
|
|
|
- anything to 8-bit RGB, 8-bit RGBA, 16-bit RGB, 16-bit RGBA
|
|
|
|
- any grey or grey+alpha, to grey or grey+alpha
|
|
|
|
- anything to a palette, as long as the palette has the requested colors in it
|
|
|
|
- removing alpha channel
|
2015-09-03 04:56:22 +00:00
|
|
|
- higher to smaller bitdepth, and vice versa
|
|
|
|
|
|
|
|
###Feature planned:
|
|
|
|
- streaming for progressive loading
|