001    /*
002     * Created on Jan 25, 2011
003     *
004     * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
005     * the License. You may obtain a copy of the License at
006     *
007     * http://www.apache.org/licenses/LICENSE-2.0
008     *
009     * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
010     * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
011     * specific language governing permissions and limitations under the License.
012     *
013     * Copyright @2011 the original author or authors.
014     */
015    package org.fest.assertions.util;
016    
017    import java.awt.image.BufferedImage;
018    import java.io.*;
019    
020    import javax.imageio.ImageIO;
021    
022    /**
023     * Reads an image from a file.
024     *
025     * @author Yvonne Wang
026     */
027    public final class ImageReader {
028    
029      /**
030       * Decodes the image in the file at the specified path.
031       * @param path the path of the image to read.
032       * @return the read image.
033       * @throws NullPointerException if the given path is {@code null}.
034       * @throws IllegalArgumentException if the given path does not belong to a file.
035       * @throws IOException if an error occurs during reading.
036       */
037      public static BufferedImage readImageFrom(String path) throws IOException {
038        if (path == null) throw new NullPointerException("The path of the image to read should not be null");
039        File file = new File(path);
040        if (!file.isFile())
041          throw new IllegalArgumentException(String.format("The path '%s' does not belong to a file", path));
042        return ImageIO.read(file);
043      }
044    
045      private ImageReader() {}
046    }