Javaプログラミング学習サイト ゆるゆるプログラミング

・Javaソースダウンロード(Rotation180.java)

画像を180°回転するJavaのソースコード例です。元の画像のファイル名と出力画像のファイル名を指定して実行します。出力ファイルの画像フォーマットはJPEGです。

このソースについての記事はこちら「画像の180°回転」です。

Rotation180.javaをダウンロード

ダウンロードしたファイルはzip形式です。解凍して使ってください。Windowsの場合、ダウンロードしたzipファイルをマウスの右ボタンでクリックして表示されるポップアップメニューから「すべて展開(T)」で解凍できます。

import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import java.io.IOException;

public class Rotation180 {
	public static void main( String[] args ) {
		// 結果格納フラグ
		boolean result;
		// ファイル名
		String inname, outname;
		// 画像格納クラス
		BufferedImage img = null;

		// 入力した引数が2つ以上かを調べる
		if ( 2 > args.length ) {
			// 入力した引数が2つ未満の場合、使用方法を表示する
			System.out.println( "Rotation180 [入力JPEG名]  [出力JPEG名]" );
			return;
		}

		// 入力JPEG名をinnameに代入(拡張子".jpg"省略なし)
		inname  = args[ 0 ];
		// 出力JPEG名をoutnameに代入(拡張子".jpg"省略なし)
		outname = args[ 1 ];

		try {
			// inname(入力JPEG)を読み込んでimgにセット
			img = ImageIO.read( new File( inname ) );
		} catch (Exception e) {
			// inname(入力JPEG)の読み込みに失敗したときの処理
			 e.printStackTrace();
			return;
		}

		// 画像の色の持ち方をチェック
		if ( BufferedImage.TYPE_3BYTE_BGR != img.getType() )
		{
			System.out.println( "対応していないカラーモデルです!("
									 + inname +")" );
			return;
		}

		// 変数を宣言
		int x, y;		// ピクセル座標
		int xs, ys;		// 画像中心座標で点対称のピクセル座標
		int width, height;	// 画像サイズ
		int size;		// 画像の全ピクセル数
		int sizeh;		// 画像の半分のピクセル数(小数点以下切捨て)
		int proccount;		// 処理したピクセル数
		int color1, color2;	// 色

		// 画像サイズの取得
		width = img.getWidth();
		height= img.getHeight();

		// 画像の全ピクセル数
		size = width * height;

		// 画像の全ピクセル数の半分(小数点以下切捨て)
		sizeh = size / 2;

		// 処理したピクセル数を0にする
		proccount = 0;

		// 回転処理
		for ( y = 0; y < height; ++ y ) {
			for ( x = 0; x < width; ++ x ) {
				// 画像中心座標を基準に(x,y)の点対称となる(xs,ys)を計算
				xs = width  - 1 - x;
				ys = height - 1 - y;

				// (x,y)の色を取得
				color1 = img.getRGB( x, y );

				// (xs,ys)の色を取得
				color2 = img.getRGB( xs, ys );

				// color2を(x,y)に設定
				img.setRGB( x, y, color2 );

				// color1を(xs,ys)に設定
				img.setRGB( xs, ys, color1 );

				// 処理したピクセル数に1を足す
				++ proccount;

				// 画像の半分を処理したら処理を終了
				if ( proccount == sizeh ) break;
			}
			// 画像の半分を処理したら処理を終了
			if ( proccount == sizeh ) break;
		}

		try {
			// imgをoutname(出力JPEG)に保存
			result = ImageIO.write( img, "jpeg", new File( outname ) );
		} catch ( Exception e ) {
			// outname(出力JPEG)の保存に失敗したときの処理
			e.printStackTrace();
			return;
		}

		// 正常に終了
		System.out.println( "正常に終了しました" );
	}
}

このソースについての記事はこちら「画像の180°回転」です。

 

■新着情報

2022.07.07 外部プログラムの実行 exeファイル実行
2022.07.06 完全数 6=1+2+3

■広告

 

 

 

 

Topへ