学习笔记:将Image(SWT)存到一个OutputStream

王朝other·作者佚名  2006-12-20
窄屏简体版  字體: |||超大  

想把一个自己生成的org.eclipse.swt.graphics.Image存到一个数据流或文件中,但是没有似乎Image没有写到文件中的API。

查到AWT的ImageIO有个Write()函数,可惜是AWT的。

发现org.eclipse.swt.graphics.ImageLoader提供save功能,既可以把它存到数据流中,也可以存到文件中。但是它的Load()函数只提供FileName和InputStream这两种参数。

郁闷。

ImageLoader的data[] 竟然是public,那就意味着把源Image的ImageData赋值给它,它的Save()照样可用了。

ImageData imageData = sourceImage.getImageData( );

ImageLoader imageLoader = new ImageLoader();

imageLoader.data = new ImageData[1];

imageLoader.data[0] = imageData;

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

imageLoader.save( outputStream, SWT.IMAGE_JPEG );

这样,就把sourceImage以JPEG格式存到数据流outputStream中了。

从SWT Newsgroup上得知,这种方法有一定局限。如果一个Composite在画面以外,那么在画面以外的部分是不会绘出来。如果这个Composite在画面以内,但是它是不可见的(Visual 为false),画到Image中的内容也不是希望中的Composite。

参考资料:

1.Create Image from Composite for printing 及其相关回帖

http://dev.eclipse.org/newslists/news.eclipse.platform.swt/msg26082.html

2.SWT Snippets

http://www.eclipse.org/swt/snippets/ 中的capture a widget image with a GC

3.addison.wesley.professional.swt.the.standard.widget.toolkit.volume.1

中关于SWT的章节

(完)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航