I have been trying to find a way to write metadata to a PNG and I have tried quite alot.
I can read the data using the pngj library using:
PngReader pngr = new PngReader(file);
pngr.readSkippingAllRows(); // reads only metadata
for (PngChunk c : pngr.getChunksList().getChunks()) {
    if (!ChunkHelper.isText(c))   continue;
        PngChunkTextVar ct = (PngChunkTextVar) c;
        String key = ct.getKey();
        String val = ct.getVal();
        System.out.print(key + " " + val + "\n" );     
    }
pngr.close();
And it works great. But I need to write to it.
I have tried:
    public boolean writeCustomData(String key, String value) throws Exception {
    PngReader pngr = new PngReader(currentImage);
    PngWriter png = new PngWriter(new FileOutputStream(currentImage), pngr.imgInfo);
    png.getMetadata().setText(key, value);
    return true;
}
But this does nothing.
And I have tried using the answer from Writing image metadata in Java, preferably PNG
this works (kinda) but my read function cant see it.