想把一个自己生成的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的章节
(完)
上一篇: Domain Object :基于业务行为的分析
下一篇: 使用javascript控制datagrid中的对象
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




