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

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

このソースについての記事はこちら「画像にノイズを加える」です。

Noise2.javaをダウンロード

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

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

public class Noise2 {
	public static void main( String[] args ) {
		boolean result;	// 結果格納フラグ
		double noiserate;	// ノイズの割合	

		// ファイル名
		String inname, outname;
		// 画像格納クラス
		BufferedImage img = null;

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

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

		// 引数を変換し、ノイズの割合に代入
		try {
			noiserate = Double.valueOf( args[ 2 ] );
		}
		catch( NumberFormatException ne )
		{
			System.out.println( "引数が不正です" );
			return;
		}

		// JPEGの読み込み
		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        width, height;
		int        r, g, b, color;
		double rate;

		// 画像サイズの取得
		width = img.getWidth();
		height= img.getHeight();
	
		// ノイズを加える
		for ( y = 0; y < height; ++ y ) {
			for ( x = 0; x < width; ++ x ) {
				// 乱数を発生
				rate = Math.random() * 100.0;

				// ノイズ色にするかを判定
				if ( noiserate > rate ) {
					// ノイズとして白色を設定
					r = 255;
					g =255;
					b =255;

					// r,g,bの色を合成
					color = ( r << 16 ) + ( g << 8 ) + b;

					// 合成した色を(x,y)に設定
					img.setRGB( x, y, color );
				}
			}
		}

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

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

このソースについての記事はこちら「画像にノイズを加える」です。

 

■新着情報

2021.06.23 配列の初期値 配列の生成直後の値は?
2021.06.18 変数の初期値 変数に値を代入しないで計算

■広告

 

 

 

 

Topへ