Установите для вывода ImageWriter значение ObjectOutputStream - PullRequest
1 голос
/ 21 февраля 2020

Я пытаюсь сжать изображения с помощью этого метода: Установка уровня сжатия jpg с ImageIO в Java.

Решение работает нормально, но я использую ObjectOutputStream вместо FileImageOutputStream, Когда я устанавливаю ObjectOutputStream в качестве выходных данных писателя, я получаю исключение java.lang.IllegalArgumentException: Illegal output type!. Мне нужно использовать ObjectOutputStream.

Это прекрасно работает ImageIO.write(img, "jpg", outstream);.

1 Ответ

3 голосов
/ 21 февраля 2020

Когда вы вызываете ImageIO.write(img, "jpg", outstream);, метод вызовет ImageIO.createImageOutputStream(outstream) и передаст результат в ImageWriter. Когда вы звоните setOutput напрямую, вы должны сделать это самостоятельно.

ImageWriter w = ImageIO.getImageWritersByFormatName("jpg").next();
w.setOutput(ImageIO.createImageOutputStream(outputStream));
w.write(image);
...