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() 没有刷新?的主要内容,如果未能解决你的问题,请参考以下文章