Чтение JPEG: ImageIO.read () портит цветовое пространство
Я пытаюсь читать, изменять масштаб и сохранять изображения в сервлете. Это соответствующий код:
BufferedImage image = ImageIO.read(file);
BufferedImage after = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
AffineTransform at = AffineTransform.getScaleInstance(factor, factor);
AffineTransformOp scaleOp = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR);
after = scaleOp.filter(image, null);
ImageIO.write(after, "JPG", file));
Исходный файл представляет собой обычный RGB-Jpeg, но когда я открываю и сохраняю файл, он выходит как CMYK-Jpeg. Это происходит, даже если я не перемасштабирую изображение, проблема заключается в простом открытии и закрытии изображения.
Когда я открываю PNG или GIF, все в порядке. Кто-нибудь знает, что здесь делать? Я ожидаю, что метод чтения ImageIO сохранит исходное цветовое пространство.
Если есть другой способ удобного чтения в формате JPEG?
Спасибо за любые предложения!