LodePNG is a PNG image decoder and encoder, all in one, no dependency or linkage to zlib or libpng required. It's made for C (ISO C90), and has a C++ wrapper with a more convenient interface on top.
It has all the code for zlib compression/decompression, PNG filtering and chunk handling, and color type conversions, in 1 single .c or .cpp file of only a few thousands of lines.
It supports PNGs with all color type, interlace type and compression type combinations and supports the alpha channel, in both the encoder and decoder.