Потоковое содержимое отсканированного изображения в файл в Java - PullRequest
4 голосов
/ 30 ноября 2011

Я пытаюсь отсканировать изображение и сохранить его в файл заданного формата (Tiff или Jpeg) с помощью приложения Swing, используя Morena и Sane.

Я загружаю все изображение в память с помощьюэтот процесс:

SaneSource source = /* source implemented here */;
MorenaImage morenaImage = new MorenaImage(source);

Image image=Toolkit.getDefaultToolkit().createImage(morenaImage);
BufferedImage bimg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

Graphics2D g = bimg.createGraphics();
g.drawImage(image, 0, 0, null);

ImageIO.write(bimg, "jpg", new File(filename));

Я почти уверен, что есть лучший способ сделать это без использования всей моей памяти, например, потоковая передача содержимого моего отсканированного изображения в кэш-памяти в файл с помощью Consumer / Observer,но я не мог достаточно хорошо сосредоточиться на этих понятиях, чтобы создать собственное решение.

Не могли бы вы помочь мне на пути к лучшей обработке изображений?Заранее спасибо, Дэвид

1 Ответ

1 голос
/ 13 августа 2012

Вы должны прикрепить ImageConsumer (который запишет изображение в OutputStream, используя ваш любимый формат изображения) непосредственно к ImageProducer (SaneSource или MorenaImage, если хотите).Вы можете найти пример ImageConsumer, который кодирует изображение как PPM и передает его в OutputStream здесь .Вам нужно написать что-то вроде этого, чтобы использовать этот пример:

ImageProducer prod = ... your producer here ....;
PpmEncoder ppm = new PpmEncoder(prod, myOutputStream);
ppm.encode();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...