JPEG-Bildfarbe wird nach ImageIO.read () und ImageIO.write () drastisch geändert

Ich habe die Methoden ImageIO.read () und ImageIO.write () in javax.imageio.ImageIO zum Lesen und Schreiben von Bildern verwendet und festgestellt, dass sich die Farbe einiger Bilder merkwürdig ändert.

Auch wenn ich meinen Code so ändere, dass ich nur Bilder lese und schreibe (mit JPEG, PNG, GIF), haben alle diese neuen Bilder das gleiche Problem.

Muss ich vor / nach den ImageIO.read/write-Methoden anderen Code hinzufügen?

Hier ist der Code, den ich verwendet habe:

    File f = new File("obw.jpg");
    BufferedImage bi = ImageIO.read(f);
    FileOutputStream fos2 = new FileOutputStream("obw2.jpg");
    ImageIO.write(bi, "JPG", fos2);
    FileOutputStream fos3 = new FileOutputStream("obw3.gif");
    ImageIO.write(bi, "GIF", fos3);
    FileOutputStream fos4 = new FileOutputStream("obw4.png");
    ImageIO.write(bi, "PNG", fos4);

Meine Umgebung:

    java version "1.6.0_35"
    MacOSX 10.8.2

Original Bild:

Eines der Bilder nach dem Lesen und Schreiben:

Antworten auf die Frage(2)

Ihre Antwort auf die Frage