最近做一个东西需要将JPanel的内容保存下来, 传统的办法是:
BufferedImage image = new BufferedImage(jpanel.getWidth(),jpanel.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = image.createGraphics();
jpanel.paint(g2); // instead of just paint(g2);
ImageIO.write(image, "jpeg",
new java.io.File("a file.jpg"));
.
不过, 很快我就发现这种方法不适合我.
首先, 我的JPanel的大小为: 6000*6000 ,
这就意味着创建一个BufferedImage需要耗费 60000*3000*4=687M 内存.
单单是创建一个BufferedImage就需要大约700M内存, 这显然不行.
既然整个保存不行, 那就试试先截取JPanel的部分内容再保存.
//....
.....
BufferedImage image = new BufferedImage(1200,60, BufferedImage.TYPE_INT_RGB); //截取大小
Graphics2D g2 = image.createGraphics();
g2.translate(-1200, -60); // 截取起点
jpanel.paint(g2); // instead of just paint(g2);
ImageIO.write(image, "jpeg",
new java.io.File("a file.jpg"));
把上面代码放在一个循环里面, it work.
转载注明:http://c-zhiwu.iteye.com/
分享到:
相关推荐
在IT行业中,有时候我们需要将网页内容以图片的形式保存或展示,这时就涉及到HTML到图片的转换。本资源"JAVA HTML截图.rar"提供了一种利用Java实现这一功能的方法。以下是关于这个主题的详细知识: 首先,Java是一...
比如,一个"截图"按钮用于启动截图过程,一个"保存"按钮用于保存截取的图片,还有可能包括"复制到剪贴板"、"编辑"等选项。 3. **捕获屏幕图像**:Java提供了`java.awt.Robot`类,可以用来模拟用户的输入操作,包括...
在JAVA中,我们可以使用`Robot`类来捕获屏幕上的图像,然后保存为图片文件。这通常是通过调用`createScreenCapture()`方法,指定要截取的屏幕区域,然后使用`ImageIO.write()`将图像保存到磁盘。 另外,弹球的动画...
这个项目提供了一段源码,模仿了QQ截图的功能,允许用户通过拖动鼠标来选择屏幕上的任何区域进行截图,并且可以自定义保存图片的路径。下面将详细解释这个Java屏幕抓图的实现过程及相关技术点。 1. **Java AWT/...
7. IE 收藏夹:IE 浏览器的收藏夹保存的是网页的 URL 链接,而不是网页的全部内容或部分。 8. 数据库范式:第二范式(2NF)要求表中不存在非主键列对主键的部分函数依赖。题目的描述符合 2NF。 9. `DatagramSocket...
可能会有一个选项让用户保存截图到本地文件,这就需要用到文件I/O操作,如File、FileOutputStream等,以及ImageIO类来读写图片文件。 8. **布局管理器**: Swing使用不同的布局管理器(如FlowLayout、GridLayout...
开发者可以通过这个类获取屏幕的一部分,然后保存为图片文件。 4. **文件操作**:截屏后的图片需要保存到指定位置,这里提到的是D盘。Java的`java.io.File`类用于处理文件和目录的操作,如创建文件、写入数据等。 ...
- `ImageLoader`类中的`getImage`方法可以指定图像的坐标和尺寸来截取图片的一部分。 - `ImageIcon`类用于创建图像图标。 ##### 2.3 音频播放 游戏体验的一个重要方面是声音效果,本项目使用了`javax.sound.sample...