`
liugang594
  • 浏览: 979706 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

截屏方法

阅读更多

1.SWT中截屏

很简单,可以直接用Display来做,如下:

 

	private Image getScreenImage() {
		GC gc = new GC(getDisplay());
		Image image = new Image(getDisplay(), getDisplay().getBounds());
		gc.copyArea(image, 0, 0);
		gc.dispose();
		return image;
	}

 

 可以想象display代表了整个屏,然后把它转存到一个Image上即可。

 

2.Swing中截屏

Swing中截屏也很简单,直接用Robot类就可以实现,如下:

 

		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		BufferedImage capture = new Robot().createScreenCapture(new Rectangle(
				new Point(0, 0), screenSize));

 

3.转换

以前有篇文章讨论过,其实这两种Image之间要进行转换也是很简单的。

 

Swing Image到SWT Image:

	               BufferedImage capture = ....; //Swing Image
                               ByteArrayOutputStream os = new ByteArrayOutputStream();

		ImageIO.write(capture, "png", os);
		byte[] b = os.toByteArray();
		ByteArrayInputStream is = new ByteArrayInputStream(b);
		final Image screenImage = new Image(display, is);  //SWT Image
		is.close();
		os.close();

 

SWT Image到Swing Image:

		Image image = ...; //SWT Image		
		ByteArrayOutputStream os = new ByteArrayOutputStream();
		ImageLoader imageLoader = new ImageLoader();
		imageLoader.data = new ImageData[]{image.getImageData()};
		imageLoader.save(os, SWT.IMAGE_PNG);
		
		byte[] byteArray = os.toByteArray();
		ImageIcon imageIcon = new ImageIcon(byteArray);    //Swing Image

 

思路是一样的,就是通过中间存储字节流来进行转换

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics