Ovviamente conviene appoggiarsi a un tool esterno:
Personalmente uso LodePNG (i.e. nel progetto in firma) per leggere e salvare.
E' un unico file C/C++ con il suo header, da aggiungere al progetto.
Ma come questo ne esistono tanti... anche librerie "multi formato" (ma se ti vengono passati SOLO in PNG inutile complicarsi la vita)
Qui comunque trovi il tool in questione:
PNG encoder and decoder in C and C++. Contribute to lvandeve/lodepng development by creating an account on GitHub.
github.com
Se ti serve solo la "decodifica" ossia solo caricare le immagini, c'e' anche la versione "ridotta":
picoPNG, che trovi sempre nei riferimenti che ti ho llinkato
P.S.
Questo e' fornito liberamente sotto Zip license, ossia, se lo usi, dovrai semplicemente "citarlo" nei "riferimenti" finali della tesi.