package pl.wroc.pwr.image.io; import java.io.File; import net.sourceforge.jiu.codecs.CodecMode; import net.sourceforge.jiu.codecs.ImageCodec; import net.sourceforge.jiu.data.MemoryRGB24Image; import pl.wroc.pwr.IOperator; import pl.wroc.pwr.image.IRGBImage; import pl.wroc.pwr.image.converter.external.RGBtoMemoryRGB24Converter; public class GenericSaver implements IOperator< Boolean > { /** * */ private static final long serialVersionUID = -2984276351173506579L; public IRGBImage inputImage; public File outputFile; public GenericSaver( IRGBImage inputImage, File outputFile ) { this.inputImage = inputImage; this.outputFile = outputFile; //System.out.println("GenericSaver on " + inputImage + " with output " + outputFile.getName()); //$NON-NLS-1$ //$NON-NLS-2$ } public void setImage( IRGBImage image ) { this.inputImage = image; } public void setFile( File outputFile ) { this.outputFile = outputFile; } public Boolean apply( ) { RGBtoMemoryRGB24Converter converter = new RGBtoMemoryRGB24Converter( this.inputImage ); MemoryRGB24Image resultImage = converter.apply(); if ( resultImage == null ) { return new Boolean( false ); } ImageCodec imageCodec = ImageCodecPicker.getCodec( this.outputFile.getAbsolutePath( ) ); if ( imageCodec == null ) { return new Boolean( false ); } try { imageCodec.setImage( resultImage ); imageCodec.setFile( this.outputFile, CodecMode.SAVE ); imageCodec.process( ); } catch ( Exception e ) { e.printStackTrace( ); return new Boolean( false ); } return new Boolean( true ); } }