Question: I've already learned how to generate BMP images based on the **BMP files structure** ([here](http://en.wikipedia.org/wiki/BMP_file_format) and [here](http://www.ue.eti.pg.gda.pl/fpgalab/zadania.spartan3/zad_vga_struktura_pliku_bmp_en.html)).

Now I'm looking for the **PNG file structure** but I haven't found any good explanations.

Do you know where I can find this explanation with schemes as well?

Answer: 
The complete specification is available here: <http://www.libpng.org/pub/png/spec/1.2/png-1.2.pdf>

Note that the PNG format is much more complex than BMP, since it allows compression, etc.
What about [Wikipedia's explanation](http://en.wikipedia.org/wiki/Portable_Network_Graphics#Technical_details)? It seems to be written very well and is very easy to understand. There's also the [specification](http://www.libpng.org/pub/png/spec/1.2/png-1.2.pdf), which goes into everything.