ColorConvertOp увеличивает размер целевого изображения. Есть ли способ уменьшить размер при переходе от цветного к черно-белому? - PullRequest
0 голосов
/ 01 марта 2011

Я использую Java и следующий код.Есть ли способ использовать RenderingHints для достижения этой цели?

   try {
        sourceImage = ImageIO.read(new File("images.jpg"));

        BufferedImage dstImage = null;
        ColorSpace colorSpace = ColorSpace.getInstance(ColorSpace.CS_GRAY);
        ColorConvertOp op = new ColorConvertOp(colorSpace, null);
        dstImage = op.filter(sourceImage, null);

        ImageIO.write(dstImage, "jpeg", new File("output.jpg"));

        System.out.println("processing complete");

    } catch (IOException e) {
        e.printStackTrace();
    }

1 Ответ

0 голосов
/ 02 марта 2011

Я получил это с помощью ImageWriteParam.setCompressionQuality

        Iterator<ImageWriter> iter = ImageIO.getImageWritersByFormatName("jpeg");
        ImageWriter writer = (ImageWriter)iter.next();
        // instantiate an ImageWriteParam object with default compression options
        ImageWriteParam iwp = writer.getDefaultWriteParam();
        iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
        iwp.setCompressionQuality(0.5f);   // an integer between 0 and 1
        // 1 specifies minimum compression and maximum quality

        File file = new File("output.jpg");
        FileImageOutputStream output = new FileImageOutputStream(file);
        writer.setOutput(output);
        IIOImage image = new IIOImage(dstImage, null, null);
        writer.write(null, image, iwp);
        writer.dispose();
...