I think he wants 16bit per color channel and for that he needs to use libPNG+zlib himself. Using jpg is even worse than 8bit color channels, its commonly known it introduces artifacts from lossy compression.
Better try to modify the heightmap such that its not 0 at depth of the Mariana Trench and 255 on Mount Everest height.
That means you could for example partition the map into squares and save the lowest and highest height of each map square separately (for example in another low resolution heightmap) and using the full map (or many smaller ones) only for additional details.
Or you could split a 32bit number into 4 bytes manually, put them in the 4 channels of an 8 bit PNG (but still avoid loosing too much of the number range from including middle of earth and beginning of outer space
), then load the image with SFML and reconstruct the number.