我正在尝试使用 Morena 和 Sane 通过 Swing 应用程序扫描图像并将其保存为指定格式(Tiff 或 Jpeg)的文件。
我用这个过程将整个图像加载到内存中:
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));
我很确定有一种更好的方法可以做到这一点而不会占用我所有的内存,比如使用消费者/观察者将缓存中扫描图像的内容流式传输到文件,但我无法很好地思考足以围绕这些概念创建我自己的解决方案。
能否请您帮助我走上更好的图像处理之路? 提前致谢,大卫
最佳答案
您应该将一个 ImageConsumer(它将使用您喜欢的图像格式将图像写入 OutputStream)直接附加到一个 ImageProducer(如果您愿意,可以是 SaneSource 或 MorenaImage)。您可以找到将图像编码为 PPM 并将其传输到 OutputStream 的 ImageConsumer 示例 here .您需要编写类似这样的内容才能使用此示例:
ImageProducer prod = ... your producer here ....;
PpmEncoder ppm = new PpmEncoder(prod, myOutputStream);
ppm.encode();
关于java - 将扫描图像的内容流式传输到 Java 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8328961/