クラス ImageUtil
java.lang.Object
org.opengion.fukurou.util.ImageUtil
ImageUtil は、画像ファイル関連の処理を集めたユーティリティクラスです。
ここでは、イメージファイルを BufferedImage にして取り扱います。
また、ImageResizer で処理していた static メソッドや、関連処理、
org.opengion.hayabusa.servlet.MakeImage の主要な処理もこちらに持ってきます。
- 導入されたバージョン:
- JDK6.0,
-
フィールドの概要
フィールド修飾子とタイプフィールド説明static final int
Y軸に対して、テキストを画像の下揃えで表示します。static final int
X軸に対して、テキストを画像の中央揃えで表示します。static final int
X軸に対して、テキストを画像の左寄せで表示します。static final int
Y軸に対して、テキストを画像の中央揃えで表示します。static final String
入力画像の形式static final int
X軸に対して、テキストを画像の右寄せで表示します。static final int
Y軸に対して、テキストを画像の上揃えで表示します。static final String
出力画像の形式 -
メソッドの概要
修飾子とタイプメソッド説明static byte[]
入力ファイル名を指定し、画像ファイルの byte配列を作成します。static void
changeColor
(BufferedImage img, Color tCol, int mask) 色変換を行います。static void
changeColor
(BufferedImage img, Color fCol, Color tCol, int mask) 色変換を行います。static BufferedImage
cmykToSRGB
(BufferedImage readImage) BufferedImageをISOCoatedのICCプロファイルで読み込み、RGBにした結果を返します。static String
ファイル名から拡張子(小文字)を求めます。static boolean
isReaderSuffix
(String fileName) ファイル名から入力画像になりうるかどうかを判定します。static boolean
isWriterSuffix
(String fileName) ファイル名から出力画像になりうるかどうかを判定します。static void
アプリケーションのサンプルです。static BufferedImage
mixImage
(BufferedImage image, String text, int xAxis, int yAxis, int maxW, int maxH, Font font, Color color) 画像イメージに、文字列を動的に合成作成して返します。static BufferedImage
mixImage
(BufferedImage image, String text, int xAxis, int yAxis, Font font, Color color) 画像イメージに、文字列を動的に合成作成して返します。static BufferedImage
入力ファイル名を指定し、画像オブジェクトを作成します。static void
saveFile
(BufferedImage image, String fout) 画像オブジェクト と、出力ファイル名を指定し、ファイルに書き込みます。
-
フィールド詳細
-
LEFT
X軸に対して、テキストを画像の左寄せで表示します。- 関連項目:
-
CENTER
X軸に対して、テキストを画像の中央揃えで表示します。- 関連項目:
-
RIGHT
X軸に対して、テキストを画像の右寄せで表示します。- 関連項目:
-
TOP
Y軸に対して、テキストを画像の上揃えで表示します。- 関連項目:
-
MIDDLE
Y軸に対して、テキストを画像の中央揃えで表示します。- 関連項目:
-
BOTTOM
Y軸に対して、テキストを画像の下揃えで表示します。- 関連項目:
-
READER_SUFFIXES
入力画像の形式 -
WRITER_SUFFIXES
出力画像の形式
-
-
メソッドの詳細
-
readFile
入力ファイル名を指定し、画像オブジェクトを作成します。- パラメータ:
fin
- 入力ファイル名- 戻り値:
- 読み込まれた画像オブジェクト(BufferedImage)
- 変更履歴:
- 5.4.3.5 (2012/01/17) CMYK対応, 5.4.3.7 (2012/01/20) FAIでのファイル取得方法変更, 5.4.3.8 (2012/01/24) エラーメッセージ追加, 5.6.5.3 (2013/06/28) 入力画像の形式 を ImageIO から取り出します。, 6.0.2.3 (2014/10/10) ImageResizer から、移植しました。
-
saveFile
画像オブジェクト と、出力ファイル名を指定し、ファイルに書き込みます。 ImageIO に指定する formatName(ファイル形式)は、出力ファイル名の拡張子から取得します。 [bmp, gif, jpeg, jpg, png, wbmp] 位がサポートされています。- パラメータ:
image
- 出力する画像オブジェクト(BufferedImage)fout
- 出力ファイル名- 変更履歴:
- 6.0.2.3 (2014/10/10) 新規作成
-
byteImage
入力ファイル名を指定し、画像ファイルの byte配列を作成します。 ImageIO に指定する formatName(ファイル形式)は、出力ファイル名の拡張子から取得します。 [bmp, gif, jpeg, jpg, png, wbmp] 位がサポートされています。- パラメータ:
fin
- 入力ファイル名- 戻り値:
- 読み込まれた画像ファイルの byte配列
- 変更履歴:
- 6.0.2.3 (2014/10/10) 新規作成
- このメソッドは、nullを返しません
-
getSuffix
ファイル名から拡張子(小文字)を求めます。 拡張子 が存在しない場合は、null を返します。- パラメータ:
fileName
- ファイル名- 戻り値:
- 拡張子(小文字)。なければ、null
- 変更履歴:
- 5.6.5.3 (2013/06/28) private ⇒ public へ変更, 6.0.2.3 (2014/10/10) ImageResizer から、移植しました。
-
isReaderSuffix
ファイル名から入力画像になりうるかどうかを判定します。 コンストラクターの引数(入力画像)や、実際の処理の中(出力画像)で 変換対象となるかどうかをチェックしていますが、それを事前に確認できるようにします。- パラメータ:
fileName
- ファイル名- 戻り値:
- 入力画像として使用できるかどうか。できる場合は、true
- 変更履歴:
- 5.6.5.3 (2013/06/28) 新規追加, 5.6.6.1 (2013/07/12) getSuffix が null を返すケースへの対応, 6.0.2.3 (2014/10/10) ImageResizer から、移植しました。
-
isWriterSuffix
ファイル名から出力画像になりうるかどうかを判定します。 コンストラクターの引数(入力画像)や、実際の処理の中(出力画像)で 変換対象となるかどうかをチェックしていますが、それを事前に確認できるようにします。- パラメータ:
fileName
- ファイル名- 戻り値:
- 出力画像として使用できるかどうか。できる場合は、true
- 変更履歴:
- 5.6.5.3 (2013/06/28) 新規追加, 5.6.6.1 (2013/07/12) getSuffix が null を返すケースへの対応, 6.0.2.3 (2014/10/10) ImageResizer から、移植しました。
-
changeColor
色変換を行います。 変換元の色を、最初のビットから作ります。 なお、スキャンしながら、色変換が行われなかった場合は、逆からスキャンします。 つまり、背景色で輪郭抽出して、外周だけ透明にするという感じです。- パラメータ:
img
- 変換対象のBufferedImagetCol
- 変換後の色mask
- 変換対象の色変動を抑えるためのマスク(0x00f0f0f0など)- 変更履歴:
- 7.0.2.1 (2019/03/04) 元の色をイメージの端から自動取得(白決め打ちでない)属性追加
-
changeColor
色変換を行います。 例えば、背景色白を、透明に変換するなどです。 ボーダー色は、背景色と異なる色の場合があるため、特別に用意しています。 ボーダーは、画像の周辺、3px を対象とします。- パラメータ:
img
- 変換対象のBufferedImagefCol
- 変換対象の色tCol
- 変換後の色mask
- 変換対象の色変動を抑えるためのマスク(0x00f0f0f0など)- 変更履歴:
- 6.0.2.3 (2014/10/10) 新規追加, 7.0.1.0 (2018/10/15) 色変換に、元の色の変動を吸収するマスク属性追加
-
cmykToSRGB
BufferedImageをISOCoatedのICCプロファイルで読み込み、RGBにした結果を返します。 (CMYKからRBGへの変換、ビット反転) なお、ここでは、外部の ICC_PROFILE(ISOcoated_v2_eci.icc) を利用して、処理速度アップを図りますが、 存在しない場合、標準の、com.sun.media.jai.util.SimpleCMYKColorSpace を利用しますので、エラーは出ません。 ただし、ものすごく遅いため、実用的ではありません。 ISOcoated_v2_eci.icc ファイルは、zip圧縮して、拡張子をjar に変更後、(ISOcoated_v2_eci.jar) javaエクステンション((JAVA_HOME\)jre\lib\ext) にコピーするか、実行時に、CLASSPATHに設定します。- パラメータ:
readImage
- BufferedImageオブジェクト- 戻り値:
- 変換後のBufferedImage
- 例外:
IOException
- 入出力エラーが発生したとき- 変更履歴:
- 5.4.3.5 (2012/01/17), 5.5.3.4 (2012/06/19) ICC_PROFILE の取得先を、ISOcoated_v2_eci.icc に変更, 6.0.2.3 (2014/10/10) ImageResizer から、移植しました。(static にして), 8.5.4.2 (2024/01/12) PMD 7.0.0 CloseResource 対応
-
mixImage
public static BufferedImage mixImage(BufferedImage image, String text, int xAxis, int yAxis, int maxW, int maxH, Font font, Color color) 画像イメージに、文字列を動的に合成作成して返します。 描画指定の位置(x,y)は、テキストの左下の位置を、画像イメージの、左上を起点(0,0)とした 位置になります。 maxW , maxH を指定すると、テキストのフォントサイズをその範囲に収まるように自動調整します。- パラメータ:
image
- 合成する元の画像オブジェクトtext
- 描画される文字列xAxis
- テキストが描画される位置のx座標。または、LEFT
,CENTER
,RIGHT
指定で、自動計算する。yAxis
- テキストが描画される位置のy座標。または、TOP
,MIDDLE
,BOTTOM
指定で、自動計算する。maxW
- テキストの最大幅(imageの幅と比較して小さい方の値。0以下の場合は、imageの幅)maxH
- テキストの最大高さ(imageの高さと比較して小さい方の値。0以下の場合は、imageの高さ)font
- 描画されるテキストのフォント。null の場合は、初期値(Dialog.plain,12px)が使われるcolor
- 描画されるテキストの色(Color)。null の場合は、Color.BLACK が使われる- 戻り値:
- 合成された画像オブジェクト(BufferedImage)
- 関連項目:
- 変更履歴:
- 6.0.2.3 (2014/10/10) 新規追加
- このメソッドは、nullを返しません
-
mixImage
public static BufferedImage mixImage(BufferedImage image, String text, int xAxis, int yAxis, Font font, Color color) 画像イメージに、文字列を動的に合成作成して返します。 描画指定の位置(x,y)は、テキストの左下の位置を、画像イメージの、左上を起点(0,0)とした 位置になります。- パラメータ:
image
- 合成する元の画像オブジェクトtext
- 描画される文字列xAxis
- テキストが描画される位置のx座標。または、LEFT
,CENTER
,RIGHT
指定で、自動計算する。yAxis
- テキストが描画される位置のy座標。または、TOP
,MIDDLE
,BOTTOM
指定で、自動計算する。font
- 描画されるテキストのフォント。null の場合は、初期値(Dialog.plain,12px)が使われるcolor
- 描画されるテキストの色(Color)。null の場合は、Color.BLACK が使われる- 戻り値:
- 合成された画像オブジェクト(BufferedImage)
- 関連項目:
- 変更履歴:
- 6.0.2.3 (2014/10/10) org.opengion.hayabusa.servlet.MakeImage から、移植しました。, 8.5.4.2 (2024/01/12) PMD 7.0.0 LocalVariableNamingConventions 対応, 8.5.5.1 (2024/02/29) switch式の使用
- このメソッドは、nullを返しません
-
main
アプリケーションのサンプルです。 入力イメージファイルを読み取って、テキストを合成して、出力イメージファイル に書き込みます。 テキストの挿入位置を、X軸、Y軸で指定します。 X軸とY軸には、特別な記号があり、左寄せ、右寄せ等の指示が可能です。 サンプルでは、new Font("Serif", Font.PLAIN, 14); と、new Color(0,0,255);(青色)を固定で渡しています。 Usage: java org.opengion.fukurou.util.ImageUtil 入力ファイル 出力ファイル -mix テキスト X軸 Y軸 [-fname=フォント名 -fstyle=スタイル -fsize=サイズ -color=カラー] X軸 指定(正の値は実際の位置) -1 ・・・ LEFT 左寄せ -2 ・・・ CENTER 中央揃え -3 ・・・ RIGHT 右寄せ Y軸 指定(正の値は実際の位置) -4 ・・・ TOP 上揃え -5 ・・・ MIDDLE 中央揃え -6 ・・・ BOTTOM 下揃え -fname=フォント名(初期値:Serif) Serif , SansSerif , Monospaced , Dialog , DialogInput -fstyle=スタイル(初期値:0:PLAIN)を、数字で選びます。 0:PLAIN , 1:BOLD , 2:ITALIC -fsize=サイズ(初期値:14) フォントサイズを整数で指定します。 -color=カラー 色を表す文字列(BLUE,GREEN か、#808000 などの16bitRGB表記) Usage: java org.opengion.fukurou.util.ImageUtil 入力ファイル 出力ファイル -trans [-color=カラー -alpha=透過率(0-100%)] -color=カラー(初期値:WHITE) 透明色にする色を指定(BLUE,GREEN か、#808000 などの16bitRGB表記) -alpha=透過率(0-100%)(初期値:0) 透過率は、0:透明から100不透明まで指定します。 -mask=元の色にマスクを16進数24Bitで指定します(初期値:00f0f0f0) -useBGColor 透明色にする色を元の一番端の色を使用する(初期値:false)- パラメータ:
args
- 引数文字列配列 入力ファイル、出力ファイル、縦横最大サイズ- 変更履歴:
- 6.4.5.1 (2016/04/28) mainメソッドの起動方法を変更します。, 7.0.1.0 (2018/10/15) 色変換に、元の色の変動を吸収するマスク属性追加, 7.0.2.1 (2019/03/04) 元の色をイメージの端から自動取得(白決め打ちでない)属性追加
-