png файл становится черным, когда сжимается в JPEG.Это потому, что PNG без потерь? - PullRequest
0 голосов
/ 14 марта 2011

У меня есть фрагмент кода, который сжимает изображение JPG с определенным качеством, но когда изображение имеет тип PNG, все они становятся черными.Есть идеи почему и как это исправить?вот мой код.

public void compressImage(String filename, ServletContext servletContext) {
    //You first need to enumerate the image writers that are available to jpg
    Iterator iter = ImageIO.getImageWritersByFormatName("jpg");
    //Then, choose the first image writer available
    ImageWriter writer = (ImageWriter) iter.next();
    //instantiate an ImageWriteParam object with default compression options
    ImageWriteParam iwp = writer.getDefaultWriteParam();
    //Set the compression quality
    iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
    iwp.setCompressionQuality(0.5f);
    try {
        BufferedImage img = ImageIO.read(new File(filename));
        String destPath = "/Users/KingdomHeart/resources/scholar/compress/compress.jpg";
        File file = new File(destPath);
        FileImageOutputStream output = new FileImageOutputStream(file);
        writer.setOutput(output);
        IIOImage image = new IIOImage(img, null, null);
        writer.write(null, image, iwp);
        writer.dispose();
    }catch(IOException e){

    }
}

1 Ответ

3 голосов
/ 15 марта 2011

Это может иметь ответы, которые вы ищете: Преобразование прозрачного GIF / PNG в JPEG с использованием Java

Вероятно, проблема в том, что вы работаете с PNG, в котором есть некоторая прозрачность.

...