001package javax.visrec;
002
003import java.io.File;
004import java.io.IOException;
005import java.io.InputStream;
006import java.net.URL;
007
008/**
009 * This interface provides a standard way to get/read different(specified) kinds of image from file, url or input stream.
010 *
011 * @author Zoran Sevarac
012 * @param <T> the type of object to be returned after getting image from {@link File}, {@link URL} or {@link InputStream}
013 * @since 1.0
014 */
015public interface ImageFactory<T> {
016
017    /**
018     * Retrieve the source through a {@link File} object and transform it into T.
019     * @param file The source file.
020     * @return T object.
021     * @throws IOException If the file I/O went wrong or couldn't transform
022     * the source into a T object.
023     */
024    T getImage(File file) throws IOException;
025
026    /**
027     * Retrieve the source through a {@link URL} object and transform it into T.
028     * @param file The source.
029     * @return T object.
030     * @throws IOException If the I/O went wrong or couldn't transform
031     * the source into a T object.
032     */
033    T getImage(URL file) throws IOException;
034
035    /**
036     * Retrieve the source through an {@link InputStream} object and transform it into T.
037     * @param file The source.
038     * @return T object.
039     * @throws IOException If the I/O went wrong or couldn't transform
040     * the source into a T object.
041     */
042    T getImage(InputStream file) throws IOException;
043        
044}