The best way is to loop over all pixels and create a diff image. In your loop you subtract the lower color value from the higher. That means black if the pixels are identical. So you should use 255 - pixelcolor and let it be the pixel value in the diff vector and when you are done, you save it as a png. I just made such a program in c++ and i used the windows imaging component to create raw byte vectors for both files and then looped over every pixel and every color to create a raw byte array with values. It reveals how jpegmini works but you have to multiply the close to zero values that you get. Quite revealing