Я пытаюсь повернуть изображения, используя библиотеку Thumbnailator. Код, который я использую, показан ниже. Он поворачивает изображение или сбрасывает изображение успешно, но качество цвета полностью портит. Также отображаются входные и выходные изображения.Thumbnailator Image Rotation messes the image
package com.abk;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
import net.coobird.thumbnailator.Thumbnails;
import net.coobird.thumbnailator.filters.Flip;
import net.coobird.thumbnailator.filters.Rotation;
import net.coobird.thumbnailator.util.exif.ExifUtils;
import net.coobird.thumbnailator.util.exif.Orientation;
public class ImageAutoRotate {
public static void main(String[] args) {
try {
BufferedImage img = ImageIO.read(new File("314.jpg"));
BufferedImage newImg = Rotation.RIGHT_90_DEGREES.apply(img);
BufferedImage flipImg = Flip.HORIZONTAL.apply(img);
File outputfile = new File("314_2.jpg");
ImageIO.write(newImg, "jpg", outputfile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
входного изображения Выход Изображение
Результат выглядит YCbCr неправильно истолковано как RGB. – haraldK
Изображение само RGB ... Есть ли способ заставить его интерпретировать изображение как RGB –
Оригинал хранится как YCbCr (большинство JPEG-файлов), но декодеры преобразуют его в RGB. Вывод, вероятно, RGBA (4 канала) перед его записью, но поскольку JPEG содержит маркер Adobe с «неизвестным» преобразованием, изображение интерпретируется как CMYK (!) ... Quickfix: используйте PNG для вывода или измените изображение на 'TYPE_3BYTE_BGR' или' TYPE_INT_RGB'. – haraldK