kolor obrazu JPEG zmienia się drastycznie po ImageIO.read () i ImageIO.write ()
Używałem metod ImageIO.read () i ImageIO.write () w javax.imageio.ImageIO do odczytu i zapisu obrazów, i odkryłem, że niektóre obrazy zmieniają się dziwnie.
Nawet jeśli zmienię kod, aby nic nie robić, ale tylko czytać obrazy i je zapisywać (z jpeg, png, gif), wszystkie te nowe zdjęcia mają ten sam problem.
Czy muszę dodać inny kod przed / po metodach ImageIO.read/write?
Oto kod, którego użyłem:
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);
Moje środowisko:
java version "1.6.0_35"
MacOSX 10.8.2
Oryginalny obraz:
Jeden z obrazów po przeczytaniu i napisaniu: