Do you know that png support is built-in? Just "use" unit graphics, and load the file into a TPortableNetworkGraphic, a TPicture or TImage.Picture directly.
True, but you also have to know how to optimize. By default it is slower than libpng, with the correct compiler options it is just as fast, though. (libpng is compiled heavily optimized, that's the only reason)
I need to know the platform, too.
For e.g. all Debian derived linux (including Ubuntu) it is simply sudo apt-get install libpng libpng-dev
Apart from the libpng-dev it is probably installed already.
But as wp suggested: why? There is already pure pascal code that is just as good. And is basically the default for FPC/Lazarus.