Dlaczego Java ImageIO spłaszcza kolory JPEG
Kiedy czytam pewne pliki JPG, kolory są spłaszczane. Oto prosty przykład, który czyta jpg i po prostu zapisuje ten sam obraz w innym pliku.
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class JPegReadTest {
public static void main(String[] args) {
if (args.length == 2) {
try {
BufferedImage src = ImageIO.read(new File(args[0]));
ImageIO.write(src, "jpg", new File(args[1]));
} catch (Exception e) {
e.printStackTrace();
}
} else {
System.err.println("Usage: java JPegReadTest src dest");
}
}
}
Jeśli spróbujesz tego na przykładhttp://www.flickr.com/photos/visualpanic/233508614/sizes/l/ , kolory obrazu docelowego różnią się od pliku źródłowego. Dlaczego? Jak to naprawić?
Próbowałem także zapisać obraz jako png, ale kolory są w nim również mdłe (więc zakładając, że informacje o kolorze nie są poprawnie odczytywane).