java - 将扫描图像的内容流式传输到 Java 文件

标签 java image file-io

我正在尝试使用 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/

相关文章:

javascript - 拖放期间从外部远程图像读取 URL 数据

JavaFX Scene Builder 访问不同类中的方法

java - 在 Java 中比较 float 和 int 是否安全?

java - 如何在 Ubuntu 上更新已经安装的 IntelliJ IDEA?

jquery - 将加载和错误事件附加到动态图像

java - 如何将鼠标监听器添加到包含图像的 JLabel

c++ - 简单的 C++ 文件 I/O 问题

c - 输出文件用H符号填充,C

encryption - 从文件中读入

java - 如何从使用 Java 的客户端在 Sybase IQ 中加载表?