2012-11-06 16 views
-2

我正在使用java应用程序。在这个应用程序捕捉图像从网络摄像头使用jmf和Java捕捉后4或5图​​像转到视频模式。我不能在当时再次捕捉图像,显示一些错误“堆内存异常错误”,请任何人告诉我的想法。在感谢提前使用java应用程序从5或6图像捕获图像

+1

我们需要查看您的代码。 *内存不足*可能会在应用程序出现严重内存泄漏时发生。 – Vulcan

+0

你对拍摄的图像做什么?你是否将每帧写入内存?如果是这样,你什么时候能够释放内存?你可以发布一些代码来了解你遇到麻烦的位置吗? – Cliff

+1

BufferedImage中有一个不明显的地方,'BufferedImage.createGraphics()'需要一个'dispose()'。 –

回答

0

首先检查,如果你正在呼吁Graphics2Ddispose()通过BufferedImage.createGraphics()创建,然后检查,如果你是在BufferedImage已创建调用flush()方法,当你不希望使用这一形象了。如果这不起作用,您可以尝试使用现成的解决方案,例如利用这个项目:

https://github.com/sarxos/webcam-capture

代码示例(以从摄像头的图片,保存在test.png文件):

Webcam webcam = Webcam.getDefault(); 
BufferedImage image = webcam.getImage(); 
ImageIO.write(image, "PNG", new File("test.png")); 

有了这个库,你不需要处理图形也不冲洗(flush)缓冲它不再被使用后的图像 - 底层驱动程序将为您做到这一点。