1

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

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

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

4

1 回答 1

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;
}

注意:当它保存图像时,它确实使用以下代码:

try
    {
    File JavaDoc file = new File JavaDoc( returnedFileName );
    FileOutputStream JavaDoc out = new FileOutputStream JavaDoc( file );
    out.write( currentImageRawData );
    out.flush();
    out.close();
}
于 2009-03-23T12:23:10.807 回答