java - swt.graphics.ImageLoader.save() 未刷新?

标签 java image swt save

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

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

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

最佳答案

原理是正确的,但是你可以尝试像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();
}

关于java - swt.graphics.ImageLoader.save() 未刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/673159/

相关文章:

java - CheckboxTreeViewer 在调用刷新()后取消选中我的选择

java - SWT 中表格的简单示例

java - 布局方向?

java - Selenium 测试用例从主菜单中选择子菜单

c# - 修改数组后将字节数组转换为 C# 中的图像

android - 延迟显示图像在android中使用位图

java - 如何设置 SWT 按钮上显示的文本的边距/填充?

Java 8 : Convert dates using stream

java - 在 Java 中将未检查的异常包装为已检查的异常

android - 关闭向上或向下拖动 fragment 的图像效果