科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道学习笔记:将Image(SWT)存到一个OutputStream

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

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

作者:Frank 来源:CSDN 2008年3月17日

关键字: OutputStream SWT java

  • 评论
  • 分享微博
  • 分享邮件
想把一个自己生成的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 及其相关回帖

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的章节

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章