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…自由位置・第2引数…X軸方向の余白を指定
LEFT_TOP…左上
TOP…上
RIGHT_TOP…右上
LEFT…左
CENTER…中央
RIGHT…右
LEFT_BOTTOM…左下
BOTTOM…下
RIGHT_BOTTOM…右下
・第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.java | 18.4KB | 開始 |