Java Application



CustomImage Ver1.0.4/CustomImage.java(18.4KB)

これは、単体のソフトではなく、Javaアプリケーション作成の為の基底クラスとして作成しました。
著作権は放棄しませんが、利用や改変等、ご自由に行なって頂いても結構です。

特に、Java(に限らず、プログラミング全般において)初心者の方にとっては、画像を表示させるだけのプログラム作成が、結構敷居が高いのではないかと・・・(VBやDelphiは簡単ですけどね(^^;))。
ぜひ、参考にして下さい。

【メソッド一覧】(全てインスタンスメソッドです)

目的メソッド名説明変更
コンストラクタCustomImage()CustomImage 変数名 = new CustomImage();で普通にコンストラクトして、コンテナにaddして下さい。
・中央揃えOFF
・縮小表示OFF(スクロールバーは自動で出現)
・高速縮小OFF
・高画質保存モードOFF
が初期状態です。
-
コンストラクタCustomImage(int max)コンストラクタの引数にゼロ以上の整数値を渡すことにより、画像履歴の保存枚数を制限します。上のデフォルトコンストラクタは、枚数無限です。なお、ゼロを渡したときは、履歴を取りません。1.0.1
ファイル読込void openFile(String filename)ファイル名はFile型ではなく、Stringで渡して下さい(絶対パス)。
読み込まれた画像ファイル(JPEGまたはGIF)を表示します。
-
ファイル保存void saveJpegFile(String filename)ファイル名はFile型ではなく、Stringで渡して下さい(絶対パス)。
現在表示されている画像をJPEG形式で保存します。
-
stretchプロパティのセットvoid setStretch(boolean st)trueを引数に呼び出すと、画像表示の際に表示領域の大きさに合わせて縮小表示します。
なお、アスペクト比(縦横の比率)は変更しません。
-
stretchプロパティのゲットboolean isStretch()--
centerプロパティのセットvoid setCenter(boolean ct)trueを引数に呼び出すと、画像表示の際に表示領域の中央に表示します。-
centerプロパティのゲットboolean isCenter()--
jpeg_hqプロパティのセットvoid setJpegHQ(boolean hq)trueを引数に呼び出すと、ファイル保存の際に高画質で保存します(ファイルサイズは大きくなります)。-
jpeg_hqプロパティのゲットboolean isJpegHQ()--
stretch_fastプロパティのセットvoid setStretchFast(boolean sf)trueを引数に呼び出すと、縮小表示の際に「画質優先」から「速度優先」になります。-
stretch_fastプロパティのゲットboolean isStretchFast()--
新たなイメージのセットvoid setNewImage(Image newimage)Image型を引数に渡すと、その画像を表示します。-
現在、保持しているイメージのゲットImage getNowImage()現在表示中の画像をImage型で返します。-
配列から新たなイメージをセットvoid setNewPixels(int[] pixels,int w,int h)int型1次元配列、画像の横ドット数、画像の縦ドット数の3つを引数に渡すと、Imageを作成して表示します。-
現在のイメージを配列でゲットint[] getNowPixels()現在表示中の画像をint型1次元配列の形で返します。-
一つ前のイメージに戻すvoid setBeforeImage()ファイルを開いたり、画像をImageやint[]でセットした場合、過去の画像を自動的に履歴に格納していきます。
このメソッドを呼び出すごとに、順番に以前の画像に戻していきます。
-
現在保持している画像の枚数をゲットint getImageCount()現在、履歴にとっている画像の枚数を返します。-
画像の横ドット数をゲットint getImageWidth()--
画像の縦ドット数をゲットint getImageHeight()--
色数カウントint countColors()現在表示中の画像の色数をカウントして返します。
2分探索木による高速サーチです。
-
画像に文字列を描画void paintString(int def,int xm,int ym,Font f,Color c,String s,int sh)画像の指定位置に文字列を描画します。
引数は、
・第1引数…左上から右下までの9ヶ所をCustomImageクラスの定数で指定
FREE_PLACE…自由位置
LEFT_TOP…左上
TOP…上
RIGHT_TOP…右上
LEFT…左
CENTER…中央
RIGHT…右
LEFT_BOTTOM…左下
BOTTOM…下
RIGHT_BOTTOM…右下
・第2引数…X軸方向の余白を指定
・第3引数…Y軸方向の余白を指定
・第4引数…フォントの種類をFont型で指定
・第5引数…文字色をColor型で指定
・第6引数…描画したい文字列をString型で指定
・第7引数…影の高さを指定(0の場合、影無し)
1.0.2
1.0.3
画像回転void turnImage(int degree)画像を90度回転します。
回転方向は、CustomImageクラスの定数で指定します。
TURN_RIGHT_90DEGREE…右90度回転
TURN_LEFT_90DEGREE…左90度回転
1.0.2
画像反転void reverseImage(int dir)画像をミラー反転します。
反転方向は、CustomImageクラスの定数で指定します。
REVERSE_LEFT_RIGHT…左右反転
REVERSE_TOP_BOTTOM…上下反転
1.0.2
表示クリアvoid clearImage()画像の「表示」を消して、何も表示されていない状態にします。 1.0.4

必要最小限の機能とメソッドしかありませんが、画像を用いるJavaアプリケーションでは、「有れば便利」なクラスだと思います(少なくとも私自身にとっては・・・)。
このクラスを使ったサンプルアプリケーションも同時に公開しましたので、参考にして下さい(ソースコードもサンプルのページで公開しています)。

Ver1.0.0 → Ver1.0.1へのコメント

画像の履歴を取れるってのは、我ながら良いアイディアだと思ったんですが、頻繁に別の画像が読み込まれるようなソフト(画像ビューア等)では、メモリを喰いまくることに気付きました(^^;)。
なので、履歴枚数を制限できるように、1つコンストラクタを追加しましたので、画像ビューア等で利用する場合は新しいコンストラクタを使って下さい。

Javaはメモリ管理が楽だなぁと思っていたら、Ver1.0.0の画像履歴ってガーベージコレクションの対象外やん!・・・やられた・・・(って、私がバカなだけ(笑))。


Ver1.0.1 → Ver1.0.2へのコメント
文字列描画や回転・反転等の機能を別クラスにせずに、このクラスに含めたのは、そのほうが楽だったので・・・(^^;)。
おかげで、ファイルサイズが前バージョンの約2倍になってしまった・・・。

Ver1.0.2 → Ver1.0.3へのコメント
文字列描画メソッドの見直しです。

<変更点>
アンチエイリアシングによる、なめらかな描画
・影部分のぼかし加工

だけなんですが、かなーり苦労しました(^^;)。


Ver1.0.3 → Ver1.0.4へのコメント
画像表示クリアを行なうメソッドを追加。


ファイル名ファイルサイズダウンロード
CustomImage.java18.4KB開始


前のページ へ戻る。