2020/03/23 公開
・画像の大きさの取得
ここでは、画像の縦と横のピクセル数を取得する方法を紹介します。画像ファイルをBufferedImageに読み込むことで、縦横のピクセル数を取得することができます。
以下は、JPEG画像の大きさを取得するJavaのソースコードです。
ImageSize.java ← クリックしてダウンロードページに移動001: import java.awt.image.BufferedImage; 002: import java.io.File; 003: import javax.imageio.ImageIO; 004: import java.io.IOException; 005: 006: public class ImageSize { 007: public static void main( String[] args ) { 008: // 画像サイズ 009: int width, height; 010: // ファイル名 011: String inname; 012: // 画像格納クラス 013: BufferedImage img = null; 014: 015: // 入力した引数が1つ以上かを調べる 016: if ( 1 > args.length ) { 017: // 入力した引数が1つ未満の場合、使用方法を表示する 018: System.out.println( "ImageSize [入力JPEG名]" ); 019: return; 020: } 021: 022: // 入力JPEG名をinnameに代入(拡張子".jpg"省略なし) 023: inname = args[ 0 ]; 024: 025: try { 026: // inname(入力JPEG)を読み込んでimgにセット 027: img = ImageIO.read( new File( inname ) ); 028: } catch (Exception e) { 029: // inname(入力JPEG)の読み込みに失敗したときの処理 030: e.printStackTrace(); 031: return; 032: } 033: 034: // 画像の横方向のピクセル数をwidthに代入 035: width = img.getWidth(); 036: 037: // 画像の縦方向のピクセル数をheightに代入 038: height = img.getHeight(); 039: 040: 041: // 画像サイズを表示 042: System.out.println( "横方向のピクセル=" + width ); 043: System.out.println( "縦方向のピクセル=" + height ); 044: } 045: }
ImageSizeを実行
C:\talavax\javasample>java ImageSize sampleimage001.jpg
1つ目の引数で渡したJPEGファイルの大きさ(横と縦のピクセル数)を表示します。
実行結果
横方向のピクセル=1600 縦方向のピクセル=1280
画像サイズの取得に成功すると、上記のようなメッセージを表示します。
次に、与えた引数が1つ未満の場合の実行結果について解説します。
ImageSizeを引数なしで実行
C:\talavax\javasample>java ImageSize
実行結果
ImageSize [入力JPEG名]
引数が1未満の場合、プログラムの引数に何を渡せばよいかを表示するようにしています。
ここからは、このソースコードを上から順番に解説していきます。
001: import java.awt.image.BufferedImage; 002: import java.io.File; 003: import javax.imageio.ImageIO; 004: import java.io.IOException;
Javaのクラスライブラリの中から「java.awt.image.BufferedImage」と「java.io.File」と「javax.imageio.ImageIO」と「java.io.IOException」というパッケージにあるクラスを、このプログラム内で使うために記述します。 この記述により、ImageIOクラスとBufferedImageクラスが利用できるようになります。
006: public class ImageSize {
クラス名を、ImageSizeとしています。
007: public static void main( String[] args ) {
このmainメソッドからプログラムを実行します。
008: // 画像サイズ 009: int width, height; 010: // ファイル名 011: String inname; 012: // 画像格納クラス 013: BufferedImage img = null;
このプログラムで使う変数を宣言しています。どのように使われているかは、後ろのソースコードで。
015: // 入力した引数が1つ以上かを調べる 016: if ( 1 > args.length ) { 017: // 入力した引数が1つ未満の場合、使用方法を表示する 018: System.out.println( "ImageSize [入力JPEG名]" ); 019: return; 020: }
1つ以上の引数が与えられたかをチェックし、1つ未満の場合に、使い方のメッセージを表示し、returnによってmainメソッドを抜けています。
022: // 入力JPEG名をinnameに代入(拡張子".jpg"省略なし) 023: inname = args[ 0 ];
与えられた引数をそれぞれ、入力JPEG名の変数(inname)に代入しています。
025: try { 026: // inname(入力JPEG)を読み込んでimgにセット 027: img = ImageIO.read( new File( inname ) ); 028: } catch (Exception e) { 029: // inname(入力JPEG)の読み込みに失敗したときの処理 030: e.printStackTrace(); 031: return; 032: }
入力JPEG名の変数(inname)を読み込んで、BufferedImageクラスのimgに格納しています。この処理には、ImageIOクラスのreadメソッドを使います。
ImageIO.readメソッド
■Fileオブジェクトを復元した結果をBufferedImageに格納します。 パラメータ input : Fileオブジェクト 戻り値 inputを復元したBufferedImageaを返します。
try { ~ } catchは、失敗する可能性がある処理を波括弧で囲み、その処理に失敗したときにcatch { ~ }の波括弧で囲まれた処理を実行するということです。この場合は、JPEGファイル名が不正であったり、存在していなかったり、フォーマットが違っているなどが原因で処理が失敗する可能性があります。処理が失敗するとreturnによってmainメソッドを抜けるようにしています。
034: // 画像の横方向のピクセル数をwidthに代入 035: width = img.getWidth(); 036: 037: // 画像の縦方向のピクセル数をheightに代入 038: height = img.getHeight();
BufferedImageクラスのgetWidthメソッドとgetHeightメソッドで画像のサイズを取得しています。
BufferedImage.getWidthメソッド
■BufferedImageの幅を返します。 パラメータ なし 戻り値 横方向のピクセル数
BufferedImage.getHeightメソッド
■BufferedImageの高さを返します。 パラメータ なし 戻り値 縦方向のピクセル数
041: // 画像サイズを表示 042: System.out.println( "横方向のピクセル=" + width ); 043: System.out.println( "縦方向のピクセル=" + height );
全ての処理が正常終了すると、ここまで処理が実行されます。
■関連コンテンツ
画像ファイル形式 | 画像ファイル形式について解説 |
画像の座標系 | 画像の座標系について解説 |
画像処理とは | 画像処理とは何かを解説 |
■新着情報
2022.07.07 | 外部プログラムの実行 | exeファイル実行 |
2022.07.06 | 完全数 | 6=1+2+3 |
■広告