最近做一个东西需要将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/
分享到:
相关推荐
4. **使用自定义的BackgroundImagePanel**:在主程序中,创建`BackgroundImagePanel`实例,设置背景图片并将其添加到窗口布局中。 ```java BackgroundImagePanel panel = new BackgroundImagePanel(); panel....
要为JPanel或Container设置背景图片,我们通常会用到以下步骤: 1. 加载图片:我们可以使用Java的ImageIcon类来加载本地或网络上的图片资源。例如: ```java ImageIcon icon = new ImageIcon("path/to/image.jpg");...
对于初学者来说,这还是不错的资源,这个源程序实现在面板中加载一些图片,还是不错的啊!!!
本示例中,我们讨论的是一个自定义的`JPanel`子类,名为`AutojustChildPanel`,该子类实现了自适应布局的能力。这种能力使得组件在面板上能根据面板尺寸的变化自动调整其位置和大小,从而保持用户界面的美观和功能性...
- 要实现滑动效果,你需要使用Java的定时器(`javax.swing.Timer`)来控制动画的帧率,并在每次定时器触发时更新JPanel的位置。通过逐渐改变JPanel的位置,可以模拟出滑动效果。 4. **自定义绘图**: - 如果需要...
java Swing多Jpanel仿安卓苹果桌面动态切换滑动效果
有时候,我们可能希望为`JPanel`添加背景图片以提升视觉效果。本篇将通过两个小例子详细介绍如何在`JPanel`中设置背景图片。 ### 示例1:动态加载背景图片 在第一个例子中,我们创建了一个名为 `ImagePanel` 的类...
Java绘图和JPanel容器
在“大鱼吃小鱼”游戏中,开发者可能创建了多个JPanel,每个面板对应游戏的不同部分,如游戏主体区域、得分显示、计时器等。通过在JPanel上进行重绘,游戏可以实现动态效果,如鱼的游动、碰撞检测和分数更新。 标签...
2. **设置面板布局**:将JPanel的布局设为CardLayout,例如`contentPane.setLayout(cardLayout);`其中contentPane是你用于展示不同布局的JPanel。 3. **添加面板**:创建多个JPanel,每个代表一个不同的布局。然后...
5. **图片资源**: 项目中可能包含了方块和背景的图片资源,这些可以通过Java的ImageIcon类加载,并在JPanel上显示。`ImageIO`类可用于从文件中读取图像数据。 6. **多线程**: 为了使游戏流畅运行,游戏循环通常在...
在这个“java迷宫设计,JPanel实现”的项目中,开发者使用了Swing来构建一个交互式的迷宫游戏。下面我们将深入探讨相关的知识点。 首先,`JPanel`是Swing中的一个容器类,它可以用来承载其他组件,如按钮、文本框等...
"Java绘图并保存"这个主题涉及到Java的AWT(Abstract Window Toolkit)和Swing库,这两个库提供了丰富的组件和工具用于图形绘制和图像处理。 首先,我们来看AWT库,它是Java最早提供的GUI工具包,包含了基本的图形...
本案例展示了如何使用Swing库创建一个简单的应用程序,该程序允许用户在文本区内输入内容,并通过点击“保存”按钮将内容保存为`.txt`文件。 #### 二、Swing组件介绍 在Java Swing中,有多种组件可用于构建用户...
此外,描述中还指出,为了添加新的图形类型,需要设计并继承自一个名为“shape”的基类。这通常意味着存在一个抽象或接口类Shape,包含了一些基本的绘图方法,如draw()和getBounds(),新图形类需要实现这些方法以...
在Java Swing库中,JPanel是一个非常常用的组件,它用于创建自定义的用户界面。有时,根据应用程序的需求,我们可能需要动态地添加或卸载JPanel。本文将深入讲解如何在Java程序中卸载JPanel面板,以及相关的重要知识...
PageNumDemo.java
文件I/O操作则通过Java的File和FileOutputStream类实现,用于将截图保存为图片文件,如JPEG或PNG格式。 为了提高用户体验,软件可能还包括错误处理和异常捕获机制,确保在遇到问题时能够友好地提示用户。此外,多...
可以使用 setContentPane() 方法将 JPanel 设置为 JFrame 的内容面板。例如: ```java JPanel contentPane = new JPanel(); // 将其他组件添加到 contentPane 中 frame.setContentPane(contentPane); ``` 需要注意的...
JPanel 渐进色背景,和图片背景(可叠加)的实现代码,以及使用样例。 jar文件中包含源代码,本身可执行以便于看效果。