Data::parsebinary::graphics::png
use Data::ParseBinary::Graphics::PNG qw{$png_parser}; my $data = $png_parser->parse(CreateStreamReader(File => $fh));
Parses the binay \s-1PNG\s0 format, however it does not decompress the compressed data. Also, it does not compute / verify the \s-1CRC\s0 values. these actions are left to other layer in the program.
This is a part of the Data::ParseBinary package, and is just one ready-made parser. please go to the main page for additional usage info.