パッケージ org.opengion.fukurou.util

# クラス ImageUtil

java.lang.Object
org.opengion.fukurou.util.ImageUtil

public final class ImageUtil extends Object
ImageUtil は、画像ファイル関連の処理を集めたユーティリティクラスです。 ここでは、イメージファイルを BufferedImage にして取り扱います。 また、ImageResizer で処理していた static メソッドや、関連処理、 org.opengion.hayabusa.servlet.MakeImage の主要な処理もこちらに持ってきます。

導入されたバージョン:
  JDK6.0,

- ## フィールドの概要

  フィールド
  修飾子とタイプ
  フィールド
  説明
  `static final int`
  `BOTTOM`
  Y軸に対して、テキストを画像の下揃えで表示します。
  `static final int`
  `CENTER`
  X軸に対して、テキストを画像の中央揃えで表示します。
  `static final int`
  `LEFT`
  X軸に対して、テキストを画像の左寄せで表示します。
  `static final int`
  `MIDDLE`
  Y軸に対して、テキストを画像の中央揃えで表示します。
  `static final String`
  `READER_SUFFIXES`
  入力画像の形式
  `static final int`
  `RIGHT`
  X軸に対して、テキストを画像の右寄せで表示します。
  `static final int`
  `TOP`
  Y軸に対して、テキストを画像の上揃えで表示します。
  `static final String`
  `WRITER_SUFFIXES`
  出力画像の形式

- ## メソッドの概要

  修飾子とタイプ
  メソッド
  説明
  `static byte[]`
  `byteImage(String fin)`
  入力ファイル名を指定し、画像ファイルの 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`
  `getSuffix(String fileName)`
  ファイル名から拡張子(小文字)を求めます。
  `static boolean`
  `isReaderSuffix(String fileName)`
  ファイル名から入力画像になりうるかどうかを判定します。
  `static boolean`
  `isWriterSuffix(String fileName)`
  ファイル名から出力画像になりうるかどうかを判定します。
  `static void`
  `main(String[] args)`
  アプリケーションのサンプルです。
  `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`
  `readFile(String fin)`
  入力ファイル名を指定し、画像オブジェクトを作成します。
  `static void`
  `saveFile(BufferedImage image, String fout)`
  画像オブジェクト と、出力ファイル名を指定し、ファイルに書き込みます。

  ### クラスから継承されたメソッド java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## フィールド詳細

  - ### LEFT

    public static final int LEFT
    X軸に対して、テキストを画像の左寄せで表示します。
    関連項目:
      - 定数フィールド値

  - ### CENTER

    public static final int CENTER
    X軸に対して、テキストを画像の中央揃えで表示します。
    関連項目:
      - 定数フィールド値

  - ### RIGHT

    public static final int RIGHT
    X軸に対して、テキストを画像の右寄せで表示します。
    関連項目:
      - 定数フィールド値

  - ### TOP

    public static final int TOP
    Y軸に対して、テキストを画像の上揃えで表示します。
    関連項目:
      - 定数フィールド値

  - ### MIDDLE

    public static final int MIDDLE
    Y軸に対して、テキストを画像の中央揃えで表示します。
    関連項目:
      - 定数フィールド値

  - ### BOTTOM

    public static final int BOTTOM
    Y軸に対して、テキストを画像の下揃えで表示します。
    関連項目:
      - 定数フィールド値

  - ### READER_SUFFIXES

    public static final String READER_SUFFIXES
    入力画像の形式

  - ### WRITER_SUFFIXES

    public static final String WRITER_SUFFIXES
    出力画像の形式

- ## メソッドの詳細

  - ### readFile

    public static BufferedImage readFile(String fin)
    入力ファイル名を指定し、画像オブジェクトを作成します。
    パラメータ:
      `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

    public static void saveFile(BufferedImage image, String fout)
    画像オブジェクト と、出力ファイル名を指定し、ファイルに書き込みます。 ImageIO に指定する formatName(ファイル形式)は、出力ファイル名の拡張子から取得します。 [bmp, gif, jpeg, jpg, png, wbmp] 位がサポートされています。
    パラメータ:
      `image` - 出力する画像オブジェクト(BufferedImage)
      `fout` - 出力ファイル名
    変更履歴:
      6.0.2.3 (2014/10/10) 新規作成

  - ### byteImage

    public static byte[] byteImage(String fin)
    入力ファイル名を指定し、画像ファイルの byte配列を作成します。 ImageIO に指定する formatName(ファイル形式)は、出力ファイル名の拡張子から取得します。 [bmp, gif, jpeg, jpg, png, wbmp] 位がサポートされています。
    パラメータ:
      `fin` - 入力ファイル名
    戻り値:
      読み込まれた画像ファイルの byte配列
    変更履歴:
      6.0.2.3 (2014/10/10) 新規作成
    このﾒｿｯﾄﾞは、nullを返しません

  - ### getSuffix

    public static String getSuffix(String fileName)
    ファイル名から拡張子(小文字)を求めます。 拡張子 が存在しない場合は、null を返します。
    パラメータ:
      `fileName` - ファイル名
    戻り値:
      拡張子(小文字)。なければ、null
    変更履歴:
      5.6.5.3 (2013/06/28) private ⇒ public へ変更, 6.0.2.3 (2014/10/10) ImageResizer から、移植しました。

  - ### isReaderSuffix

    public static boolean isReaderSuffix(String fileName)
    ファイル名から入力画像になりうるかどうかを判定します。 コンストラクターの引数（入力画像）や、実際の処理の中（出力画像）で 、変換対象となるかどうかをチェックしていますが、それを事前に確認できるようにします。
    パラメータ:
      `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

    public static boolean isWriterSuffix(String fileName)
    ファイル名から出力画像になりうるかどうかを判定します。 コンストラクターの引数（入力画像）や、実際の処理の中（出力画像）で 、変換対象となるかどうかをチェックしていますが、それを事前に確認できるようにします。
    パラメータ:
      `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

    public static void changeColor(BufferedImage img, Color tCol, int mask)
    色変換を行います。 変換元の色を、最初のビットから作ります。 なお、スキャンしながら、色変換が行われなかった場合は、逆からスキャンします。 つまり、背景色で輪郭抽出して、外周だけ透明にするという感じです。
    パラメータ:
      `img` - 変換対象のBufferedImage
      `tCol` - 変換後の色
      `mask` - 変換対象の色変動を抑えるためのﾏｽｸ(0x00f0f0f0など)
    変更履歴:
      7.0.2.1 (2019/03/04) 元の色をイメージの端から自動取得(白決め打ちでない)属性追加

  - ### changeColor

    public static void changeColor(BufferedImage img, Color fCol, Color tCol, int mask)
    色変換を行います。 例えば、背景色白を、透明に変換するなどです。 ボーダー色は、背景色と異なる色の場合があるため、特別に用意しています。 ボーダーは、画像の周辺、3px を対象とします。
    パラメータ:
      `img` - 変換対象のBufferedImage
      `fCol` - 変換対象の色
      `tCol` - 変換後の色
      `mask` - 変換対象の色変動を抑えるためのﾏｽｸ(0x00f0f0f0など)
    変更履歴:
      6.0.2.3 (2014/10/10) 新規追加, 7.0.1.0 (2018/10/15) 色変換に、元の色の変動を吸収するﾏｽｸ属性追加

  - ### cmykToSRGB

    public static BufferedImage cmykToSRGB(BufferedImage readImage) throws IOException
    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 にして)

  - ### 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)
    関連項目:
      - `mixImage(BufferedImage, String, int, int, Font, Color)`
    変更履歴:
      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)
    関連項目:
      - `mixImage(BufferedImage, String, int, int, int, int, Font, Color)`
    変更履歴:
      6.0.2.3 (2014/10/10) org.opengion.hayabusa.servlet.MakeImage から、移植しました。
    このﾒｿｯﾄﾞは、nullを返しません

  - ### main

    public static void main(String[] args)
    アプリケーションのサンプルです。 入力イメージファイルを読み取って、テキストを合成して、出力イメージファイル に書き込みます。 テキストの挿入位置を、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) 元の色をイメージの端から自動取得(白決め打ちでない)属性追加