2022.11.18

画像処理

画像をPNG形式に変換

このサイトで紹介している画像操作クラスMyBufferedImage0」を利用して、JPEG/BMP/TIFFなどの画像形式PNG形式ファイル保存する方法を説明します。

変換方法

以下の方法で変換します。

①変換前の画像をMyBufferedImage0.readメソッドで読み込む
②MyBufferedImage0.writePNGメソッドで変換後のファイル名でファイル保存

以上です。

Javaソースコード

画像PNG形式ファイルに変換するJavaソースコードです。

MyBufferedImage0クラスを利用しています。

ToPNG.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
public class ToPNG {
	public static void main(String[] args) {
		// ファイル名
		String inname, outname;

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

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

		// 画像操作クラス
		MyBufferedImage0 img = new MyBufferedImage0();

		// 入力画像の読み込み
		if ( !img.read( inname ) ) {
			System.out.println( "読み込みに失敗しました!(" + inname +")" );
			return;
		}

		// PNG画像の保存
		if ( !img.writePNG( outname ) ) {
			System.out.println( "保存に失敗しました!(" + outname +")" );
			return;
		}

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

このソースのコンパイルには、JavaソースファイルMyBufferedImage0.Java」が必要です。

以下から取得してください。

BufferedImageクラスを利用して、利便性の高い画像操作クラスを作成しました。興味のある方は、是非ご覧ください。

2022.11.16

実行方法

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis ToPNG.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac ToPNG.java

MyBufferedImage0.Javaは、指定しなくてもコンパイルされます。

input.jpgをoutout.pngに変換

java ToPNG input.jpg outout.png

Javaソースコードの解説

ここから、ソースコードを詳しく解説していきます。

001
public class ToPNG {

クラス名を、ToPNGとしています。

002
	public static void main(String[] args) {

このmainメソッドからプログラムを実行します。

003
004
		// ファイル名
		String inname, outname;

このプログラムで使うファイル名を格納する変数を宣言しています。

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

2つ以上の引数が与えられたかをチェックし、2つ未満の場合に、使い方のメッセージを表示し、returnによってmainメソッドを抜けています。

013
014
015
016
		// 入力画像名をinnameに代入(拡張子省略なし)
		inname  = args[ 0 ];
		// 出力PNG名をoutnameに代入(拡張子".png"省略なし)
		outname = args[ 1 ];

与えられた2つの引数をそれぞれ、入力画像名の変数(inname)と出力PNG名の変数(outname)に代入しています。

018
019
		// 画像操作クラス
		MyBufferedImage0 img = new MyBufferedImage0();

画像を操作するMyBufferedImage0クラスの実体imgを作成しています。

021
022
023
024
025
		// 入力画像の読み込み
		if ( !img.read( inname ) ) {
			System.out.println( "読み込みに失敗しました!(" + inname +")" );
			return;
		}

MyBufferedImage0.readメソッドで、画像ファイルinnameを読み込んでいます。

MyBufferedImage0.readメソッド

boolean create( String imgname )
・指定した画像ファイルを読み込みます。

  パラメータ imgname  : フルパスの画像ファイル名(拡張子は省略不可)

  戻り値    true   : 画像の読み込みに成功
         false  : 画像の読み込みに失敗
027
028
029
030
031
		// PNG画像の保存
		if ( !img.writePNG( outname ) ) {
			System.out.println( "保存に失敗しました!(" + outname +")" );
			return;
		}

MyBufferedImage0.writePNGメソッドで、ファイル名outnameでPNG画像を保存しています。

MyBufferedImage0.writePNGメソッド

boolean writePNG( String imgname )
・画像をPNG形式のファイルで保存します。

  パラメータ imgname  : フルパスのPNG画像ファイル名

  戻り値    true   : 画像の読み込みに成功
         false  : 画像の読み込みに失敗
033
034
		// 正常に終了
		System.out.println( "正常に終了しました" );

保存に成功したメッセージをprintlnコンソール出力しています。全ての処理が正常終了すると、ここまで処理が実行されます。

関連コンテンツ

画像フォーマット形式・色・大きさ・傾きなどの変更、特定の図形(文字・記号など)を見つけたり、取り出したりする画像処理について詳しく解説。

2015.11.29

一般に使われている画像フォーマットには、いろいろな種類があります。画像フォーマットBMP、JPEG、PNG、GIF、TIFFの特徴を知ってますか?

2015.11.29

このサイトのオリジナルクラスのMyBufferedImage0クラスを利用して、JPEG、PNG、BMP、TIFFなどの各種画像の横と縦のピクセル数を求めるプログラムを紹介しています。

2022.11.19

画像の一部を切り出して、新しい画像に保存する方法を解説しています。ソースコード付きです。

2023.02.23

条件式を判断して処理を分岐する方法を詳しく説明しています。

2023.03.20

変数やクラスに格納されている値をコンソール出力する方法は?

2020.03.23

メソッドを抜けるときに使用するreturn文について説明しています。

2020.03.20

プログラムの最初に実行されるメソッドは?

2022.12.13

プログラミングで使う変数って何?

2020.03.23

Javaのプログラムを書いてみませんか?プログラムの書き方をくわしく説明しています。

2020.03.23

「Javaソースコード」から実行可能な「オブジェクトコード」に変換する方法をくわしく説明しています。

2020.03.23

BufferedImageクラスを利用して、利便性の高い画像操作クラスを作成しました。興味のある方は、是非ご覧ください。

2022.11.16

ファイルは、データを取り扱うとき管理単位の一つで、ハードディスク、SSD,USBメモリ、CD/DVD/ブルーレイなどの記憶媒体に保存するときに使われます。詳しくは、記事をご覧ください。

2022.08.12

プログラミング言語とは?種類や特徴について説明しています。

2022.08.03

画像って何?

2022.07.25

Javaプログラムの構成について解説しています。詳しくは、こちらをご覧ください。

2020.03.23

コンピュータに保存されたファイルを特定するための名前がファイル名です。その付け方は?

2016.11.23

メソッドの定義方法を詳しく解説しています。Javaのサンプルソースコードを使った説明もあります。

2020.03.23

広告