swt.graphics.ImageLoader.save() 没有刷新?

Posted

技术标签:

【中文标题】swt.graphics.ImageLoader.save() 没有刷新?【英文标题】:swt.graphics.ImageLoader.save() not flushed? 【发布时间】:2009-03-23 12:13:25 【问题描述】:

我正在使用此类 swt.graphics.ImageLoader 将文件另存为 PNG:

ImageLoader loader = new ImageLoader();
loader.data = new ImageData[]  m_imgdat ;
loader.save(selected, SWT.IMAGE_PNG);

但有时我得到的文件不完整。最后一行像素是黑色的,某些程序(photoshop)完全拒绝打开它。 有什么我想念的吗?我怎样才能告诉这个类刷新文件并关闭它?

【问题讨论】:

【参考方案1】:

原理是正确的,但你可以尝试像ImageDialog那样保存:

查看它的buttonPressed()方法:

try

    ImageData imageData = new ImageData( new ByteArrayInputStream JavaDoc( this.newImageRawData ) );
    if ( imageData.type != this.requiredImageType )
    
        ImageLoader imageLoader = new ImageLoader();
        imageLoader.data = new ImageData[]  imageData ;
        ByteArrayOutputStream JavaDoc baos = new ByteArrayOutputStream JavaDoc();
        imageLoader.save( baos, this.requiredImageType );
        this.newImageRawDataInRequiredFormat = baos.toByteArray();
    
    else
    
        this.newImageRawDataInRequiredFormat = this.newImageRawData;
    

catch ( SWTException swte )

    this.newImageRawDataInRequiredFormat = null;


注意:当它saves an image时,它确实使用了以下代码:

try
    
    File JavaDoc file = new File JavaDoc( returnedFileName );
    FileOutputStream JavaDoc out = new FileOutputStream JavaDoc( file );
    out.write( currentImageRawData );
    out.flush();
    out.close();

【讨论】:

以上是关于swt.graphics.ImageLoader.save() 没有刷新?的主要内容,如果未能解决你的问题,请参考以下文章