Проблема с цветами после преобразования изображения - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть класс, который конвертирует изображения из PNG в JPG (для экономии места).Моя проблема в том, что большинство изображений идет от этого before converting к этому.[after

В настоящее время я обнаружил только две картинки, на которые не влияет преобразование галерея , но если вы используете Windows 10 по умолчанию, окна приложения 10 изображений игнорируют их при просмотре изображений.Если я открою их, приложение будет вести себя так, будто это только картинка в папке, даже если это не так.

import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
import javax.imageio.stream.FileImageOutputStream;
import java.awt.image.BufferedImage;
import java.io.*;

public class PNG2JPG {
     boolean status;

     PNG2JPG(String path,float quality){
        File file = new File(path);

        try {
            BufferedImage image = ImageIO.read(file);
            String fileName = file.getName();
            path = path.substring(0,path.lastIndexOf('\\'));
            fileName = fileName.substring(0,fileName.lastIndexOf('.'));

            JPEGImageWriteParam jpegParams = new JPEGImageWriteParam(null);
            jpegParams.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
            jpegParams.setCompressionQuality(quality); //Quality from 0 to 1

            final ImageWriter writer = ImageIO.getImageWritersByFormatName("jpg").next();
            writer.setOutput(new FileImageOutputStream(
                    new File(path + "/" + fileName + ".jpg")));
            writer.write(null, new IIOImage(image, null, null), jpegParams);

            status = true;
        }

        catch (IOException e){
            System.out.println("No file found");
            status = false;
        }
    }
}
...