ImageIO で画像を入力する

ImageIO(ファイル入力)を使って画像を入力します。
File f, String fileName, String url をパラメータとする例を掲載しています。

前田稔の超初心者のプログラム入門

プログラムの説明

  1. メモ帳などでタイプして IOImage.java の名前で保存して下さい。
    //★ ImageIO で JPEG 画像を入力する    前田 稔
    import java.io.*;
    import java.awt.*;
    import javax.swing.*;
    import java.awt.Image;
    import javax.imageio.ImageIO;
    import java.net.URL;
    
    class IOImage extends JFrame
    {   static  Image   img;
    
        // Main
        public static void main(String args[])
        {   new IOImage();  }
    
        // Constructor
        public IOImage()
        {   super("ImageIO Test");
            img = getToolkit().getImage("c:\\data\\test\\ayu.jpg");
            //img = loadImage("c:\\data\\test\\ayu.jpg");
            //File infile = new File("c:\\data\\test\\ayu.jpg");
            //img = loadImage(infile);
            //img = loadImageUrl("http://www.eonet.ne.jp/~maeda/winc/img/ayu.jpg");
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setSize(320, 230);
            setVisible(true);
        }
    
        // Paint Method
        public void paint(Graphics g)
        {   if (img!=null)
            {   g.drawImage(img,16,40,this);  }
        }
    
        //☆ loadImage Method
        public static Image loadImage(File f)
        {   try
            {   Image img = ImageIO.read(f);
                return img;
            }
            catch (IOException e)
            {   throw new RuntimeException(e);  }
        }
        public static Image loadImage(String fileName)
        {   InputStream is = null;
            try
            {   is = new FileInputStream(fileName);
                Image img = ImageIO.read(is);
                return img;
            }
            catch (IOException e)
            {   throw new RuntimeException(e);  }
            finally
            {   if (is != null)
                    try { is.close(); }
                    catch (IOException e) {}
            }
        }
        public static Image loadImageUrl(String url)
        {   try
            {   URL u = new URL(url);
                Image img = ImageIO.read(u);
                return img;
            }
            catch (IOException e)
            {   throw new RuntimeException(e);  }
        }
    }
    
  2. 画像ファイル(ayu.jpg)をパスで指定したフォルダー("c:\\data\\test\\ayu.jpg")に格納して下さい。
    テストするときは、適当なサイズの JPEG 画像であれば何でもかまいません。
    Image をロードするメソッドを、順番に試してみて下さい。
            img = getToolkit().getImage("c:\\data\\test\\ayu.jpg");
            //img = loadImage("c:\\data\\test\\ayu.jpg");
            //File infile = new File("c:\\data\\test\\ayu.jpg");
            //img = loadImage(infile);
            //img = loadImageUrl("http://www.eonet.ne.jp/~maeda/winc/img/ayu.jpg");
        

プログラムの説明

  1. getToolkit().getImage() や ImageIO で File, String, URL をパラメータとして画像を入力します。
    class IOImage は JFrame を継承しています。
    Image img は画像を入力する領域です。
        import java.io.*;
        import java.awt.*;
        import javax.swing.*;
        import java.awt.Image;
        import javax.imageio.ImageIO;
        import java.net.URL;
    
        class IOImage extends JFrame
        {   static  Image   img;
        
  2. Main では IOImage() を生成するだけです。
        // Main
        public static void main(String args[])
        {   new IOImage();
        }
        
  3. Constructor で img に画像をロードします。
    最初は getToolkit().getImage() で画像をロードしています。
    このメソッドはスレッドで画像ファイルの入力を開始するとすぐに次へ進みます。
    getToolkit() をコメントアウトして、loadImage() で画像をロードして下さい。
    ImageIO.read() を使った場合は、画像ファイルの入力が完了してから次に進みます。
            //img = getToolkit().getImage("c:\\data\\test\\ayu.jpg");
            img = loadImage("c:\\data\\test\\ayu.jpg");
        
    loadImage() をコメントアウトして、File で画像をロードして下さい。
            //img = loadImage("c:\\data\\test\\ayu.jpg");
            File infile = new File("c:\\data\\test\\ayu.jpg");
            img = loadImage(infile);
        
    File をコメントアウトして、loadImageUrl() で画像をロードして下さい。
    "http://www.eonet.ne.jp/~maeda/winc/img/ayu.jpg" は私のホームページに格納されている画像です。
            //File infile = new File("c:\\data\\test\\ayu.jpg");
            //img = loadImage(infile);
            img = loadImageUrl("http://www.eonet.ne.jp/~maeda/winc/img/ayu.jpg");
        
  4. Image をロードするメソッド群です。
    loadImage(File f) は File で指定された Image をロードするメソッドです。
    loadImage(String fileName) は String で指定された Image をロードするメソッドです。
    loadImageUrl(String url) は String で指定された URL から Image をロードするメソッドです。
    try と catch でエラーを起こした時の処理を記述します。
        //☆ loadImage Method
        public static Image loadImage(File f)
        {   try
            {   Image img = ImageIO.read(f);
                return img;
            }
            catch (IOException e)
            {   throw new RuntimeException(e);  }
        }
        public static Image loadImage(String fileName)
        {   InputStream is = null;
            try
            {   is = new FileInputStream(fileName);
                Image img = ImageIO.read(is);
                return img;
            }
            catch (IOException e)
            {   throw new RuntimeException(e);  }
            finally
            {   if (is != null)
                    try { is.close(); }
                    catch (IOException e) {}
            }
        }
        public static Image loadImageUrl(String url)
        {   try
            {   URL u = new URL(url);
                Image img = ImageIO.read(u);
                return img;
            }
            catch (IOException e)
            {   throw new RuntimeException(e);  }
        }
        

超初心者のプログラム入門(Java2)