package pl.wroc.pwr.image.io; import java.awt.image.RenderedImage; import java.io.File; import java.io.IOException; import javax.media.jai.JAI; import javax.media.jai.RenderedOp; import pl.wroc.pwr.IOperator; import pl.wroc.pwr.image.IRGBImage; import pl.wroc.pwr.image.converter.external.RenderedImagetoRGBConverter; import com.sun.media.jai.codec.FileSeekableStream; /** * Generic image loader routine. * Should be able to load images of any kind. * @author Mariusz Paradowski */ public class GenericLoader implements IOperator< IRGBImage > { /** * */ private static final long serialVersionUID = -5525818153995244353L; private static String JAI_COMMAND = "stream"; //$NON-NLS-1$ public File imageFile; public GenericLoader(File imageFile) { this.imageFile = imageFile; //System.out.println("GenericLoader on " + imageFile.getName()); //$NON-NLS-1$ } public GenericLoader(String imageFile) { this(new File(imageFile)); } public void setImageFile(File file) { this.imageFile = file; } public IRGBImage apply() { FileSeekableStream stream = null; try { stream = new FileSeekableStream(this.imageFile); } catch (IOException e) { e.printStackTrace(); return null; } RenderedOp inputImage = JAI.create(JAI_COMMAND, stream); if (inputImage == null) { System.out.println("Błąd odczytu obrazu przez pakiet JAI."); return null; } RenderedImagetoRGBConverter converter = new RenderedImagetoRGBConverter(inputImage); return converter.apply(); } }