java中如何得到屏幕图像信息并保存起来 最后画出来 是不是用BufferedImage来保存啊 求一个大概过程

急求 感谢

你的这个问题大概分为以下几个步骤:
1.先得到屏幕图像:
这里如果只是得到图像,图像抓取出来一般是矩形的图片(有专门的方法Robot.createScreenCapture()),图片的大小用边界检测来限制(java.Rectangle类中参考下),抓取到的图片它有左上角那个点的坐标(x,y)还有宽度width,还有高度height,这些就是图像的基本信息了(其他信息如颜色之类的是同样的道理),最好写一个Image的Bean,你存储的时候就可以直接存对象,而不是每个图像的基本信息了。
2.从内存中把图片读出来并保存到磁盘:
抓取下来的图片被BufferedImage接收,但是这个图片并没有被保存起来,只是在内存中的缓存区而已。不管是什么数据,包括数据库里面的表,都是以文件的形式被保存在磁盘上的,所以这里就要把BufferedImage写入一个文件(推荐使用字符流)。这个过程用到的是IO上面的知识。
3.重新画出图片:
第二步中已经把图片以对象的形式保存在文件中了,那么你要画出来就需要重新从文件中读取出这个图片的信息(IO上的知识)(x,y,width,height....),Frame会自动调用paint方法,但是你需要在Image的Bean里面定义它自身的draw方法,然后在paint方法中调用draw方法,这样就可以在你的程序窗口中画出这张图片。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-02-02
1. 用java.Rectangle来限制截屏范围,例如:
captureSize = new Rectangle(50,50,200,200); //特定范围
captureSize = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()); //全屏幕

2. 用java.awt.Robot来建立一个BufferedImage,例如:
capture = new Robot().createScreenCapture(captureSize);
**这里需要处理java.awt.AWTException

这时截图就完成了,"画出来"的定义多种多样,这里就给你举个简单的用JFrame显示出来的例子

3.用刚才产生的BufferedImage,建立一个javax.swing.JLabel,这时需要用到javax.swing.ImageIcon, 例如:
JLabel display = new JLabel(new ImageIcon(capture));

4.把产生的Label添加到Frame或者Frame下属的Panel中,例如:
JFrame mainFrame = new JFrame();
mainFrame.getContentPane().add(label);

5.调整Frame大小并使其可见,例如:
frame.pack();
frame.setVisible(true);

当然还有更多其它的方法,这些code也只是给你一个大概的思路,还有很多需要你自己去处理的小问题,希望帮得到你
第2个回答  2011-02-02
现隐藏本身 JFrame.setVisible(false); 抓取屏幕 Robot.createScreenCapture()得到一张BufferedImage , 写入文件 ImageIO.write(RenderedImage im, String formatName, File output) ;
BufferedImage implements RenderedImage

java中如何得到屏幕图像信息并保存起来 最后画出来 是不是用BufferedIm...
2.从内存中把图片读出来并保存到磁盘:抓取下来的图片被BufferedImage接收,但是这个图片并没有被保存起来,只是在内存中的缓存区而已。不管是什么数据,包括数据库里面的表,都是以文件的形式被保存在磁盘上的,所以这里就要把BufferedImage写入一个文件(推荐使用字符流)。这个过程用到的是IO上面的知识。

在java中 如何能获取窗口的画面,然后通过一张图片跟屏幕比对,如果有个...
BufferedImage有getRGB(x,y) 方法,,,逐点取来对比,哪点颜色不同就是不同了——也可以设定一个比率,多少比例不同才认为是不同的。。。int getRGB(int x,int y)返回默认 RGB 颜色模型 (TYPE_INT_ARGB) 和默认 sRGB 颜色空间中的整数像素。int[]getRGB(int startX,int startY,int w,int ...

java中的bufferedimage或者javacv中的iplimage如何实现图像序列化
图像对象可以编码成指定图像格式文件保存在硬盘上,需要时再对其进行解码读入内存。但是除了这样还有别的办法可以将图像对象保存在硬盘上吗? 熟悉Java I\/O 的人也许可以想到采用对象序列化(Object serialization)试一试,很好,但是如果你研究了 BufferedImage 类的结构后就会大失所望(至少当时我是这样)。...

如何使用Java实现屏幕找图功能
BufferedImage screenImg = robot.createScreenCapture(new Rectangle(0, 0,w, h));\/\/对屏幕指定范围进行截图,保存到BufferedImage中 OutputStream out = new FileOutputStream("data\/images\/screen.png");ImageIO.write(screenImg, "png", out);\/\/将截到的BufferedImage写到本地 InputStream in =...

Java 画图软件中如何保存画布中的图像?
BufferedImage img = new BufferedImage(int w, int h)[Component].printAll(img.getGraphics());ImageIO.write(img,[OutputStream out]);

怎么用java从文件中读取图片和写入图片到文件里
import java.io.*;读取图片的方法如下:Image[] array = new Image[10];Image image = ImageIO.read(new File("d:\\\\source.gif"));\/\/根据你实际情况改文件路径吧array[0] = image;图片读出来了。如果你有一个Image对象,想把它写入文件可以这样做:BufferedImage image = ImageIO.read(new File("d:\\\\...

java 如何用BufferedImage画出图像
把newImage的图再画到image里面去;实例代码如下:public class Tank extends JFrame { private Image img = null; boolean fi = false; BufferedImage bi; public Tank() { this.addKeyListener(new KeyMonitor()); this.setBounds(300, 300, 300, 300); this.setVisible(true); this.s...

用java怎样将一张图片读取并保存到一个矩阵当中
BufferedImage img = ImageIO.read(new File(filename));Raster ra = img.getData();Rectangle rect = ra.getBounds();\/\/ int nWidth = ra.getMinX();int nImageDate[] = new int[rect.height*rect.width];int nTemp[] = new int[400*400];nImageDate = ra.getPixels(0,0,rect....

Java:Image和BufferedImage的区别是什么?
因此,用来构造 BufferedImage 的任何 Raster 都必须满足:minX=0 且 minY=0。Java将一副图片加载到内存中的方法是:String imgPath = "D:\/\/demo.bmp";BufferedImage image = ImageIO.read(new FileInputStream(imgPath));该方法BufferedImage 可以获得图片的详细信息,例如:获得图片的宽度:image....

JAVA中image(用Bufferedinmage得到的image)所在的frame干扰其他frame...
new ComponentAdapter() { public void componentHidden(ComponentEvent e) { } public void componentMoved(ComponentEvent e) { } public void componentResized(ComponentEvent e) { \/\/实现这个方法,重新设置一遍图片的大小 } public void componentShown(ComponentEvent e) { } });...

相似回答