mirror of https://github.com/status-im/nimPNG.git
316a345290 | ||
---|---|---|
suite | ||
.gitattributes | ||
.gitignore | ||
nimPNG.nim | ||
nimPNG.nimble | ||
nimz.nim | ||
png-1.2.pdf | ||
readme.md | ||
testCodec.nim | ||
testSuite.nim |
readme.md
#nimPNG Portable Network Graphics Encoder and Decoder written in Nim store lossless image with good compression
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
- higher to smaller bitdepth, and vice versa
###Feature planned:
- streaming for progressive loading