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

クラス ImageUtil


  • public final class ImageUtil
    extends java.lang.Object
    ImageUtil は、画像ファイル関連の処理を集めたユーティリティクラスです。 ここでは、イメージファイルを BufferedImage にして取り扱います。 また、ImageResizer で処理していた static メソッドや、関連処理、 org.opengion.hayabusa.servlet.MakeImage の主要な処理もこちらに持ってきます。
    バージョン
    6.0.2.3 (2014/10/10)
    作成者
    Hiroki Nakamura
    導入されたバージョン:
    JDK6.0,
    • フィールドの概要

      フィールド 
      修飾子とタイプ フィールド 説明
      static int BOTTOM
      Y軸に対して、テキストを画像の下揃えで表示します。
      static int CENTER
      X軸に対して、テキストを画像の中央揃えで表示します。
      static int LEFT
      X軸に対して、テキストを画像の左寄せで表示します。
      static int MIDDLE
      Y軸に対して、テキストを画像の中央揃えで表示します。
      static java.lang.String READER_SUFFIXES  
      static int RIGHT
      X軸に対して、テキストを画像の右寄せで表示します。
      static int TOP
      Y軸に対して、テキストを画像の上揃えで表示します。
      static java.lang.String WRITER_SUFFIXES  
    • メソッドの概要

      すべてのメソッド staticメソッド concreteメソッド 
      修飾子とタイプ メソッド 説明
      static byte[] byteImage​(java.lang.String fin)
      入力ファイル名を指定し、画像ファイルの byte配列を作成します。
      static void changeColor​(java.awt.image.BufferedImage img, java.awt.Color tCol, int mask)
      色変換を行います。
      static void changeColor​(java.awt.image.BufferedImage img, java.awt.Color fCol, java.awt.Color tCol, int mask)
      色変換を行います。
      static java.awt.image.BufferedImage cmykToSRGB​(java.awt.image.BufferedImage readImage)
      BufferedImageをISOCoatedのICCプロファイルで読み込み、RGBにした結果を返します。
      static java.lang.String getSuffix​(java.lang.String fileName)
      ファイル名から拡張子(小文字)を求めます。
      static boolean isReaderSuffix​(java.lang.String fileName)
      ファイル名から入力画像になりうるかどうかを判定します。
      static boolean isWriterSuffix​(java.lang.String fileName)
      ファイル名から出力画像になりうるかどうかを判定します。
      static void main​(java.lang.String[] args)
      アプリケーションのサンプルです。
      static java.awt.image.BufferedImage mixImage​(java.awt.image.BufferedImage image, java.lang.String text, int xAxis, int yAxis, int maxW, int maxH, java.awt.Font font, java.awt.Color color)
      画像イメージに、文字列を動的に合成作成して返します。
      static java.awt.image.BufferedImage mixImage​(java.awt.image.BufferedImage image, java.lang.String text, int xAxis, int yAxis, java.awt.Font font, java.awt.Color color)
      画像イメージに、文字列を動的に合成作成して返します。
      static java.awt.image.BufferedImage readFile​(java.lang.String fin)
      入力ファイル名を指定し、画像オブジェクトを作成します。
      static void saveFile​(java.awt.image.BufferedImage image, java.lang.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 java.lang.String READER_SUFFIXES
      • WRITER_SUFFIXES

        public static final java.lang.String WRITER_SUFFIXES
    • メソッドの詳細

      • readFile

        public static java.awt.image.BufferedImage readFile​(java.lang.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​(java.awt.image.BufferedImage image,
                                    java.lang.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​(java.lang.String fin)
        入力ファイル名を指定し、画像ファイルの byte配列を作成します。 ImageIO に指定する formatName(ファイル形式)は、出力ファイル名の拡張子から取得します。 [bmp, gif, jpeg, jpg, png, wbmp] 位がサポートされています。
        パラメータ:
        fin - 入力ファイル名
        戻り値:
        読み込まれた画像ファイルの byte配列
        変更履歴:
        6.0.2.3 (2014/10/10) 新規作成
        このメソッドは、nullを返しません
      • getSuffix

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

        public static void changeColor​(java.awt.image.BufferedImage img,
                                       java.awt.Color fCol,
                                       java.awt.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 java.awt.image.BufferedImage cmykToSRGB​(java.awt.image.BufferedImage readImage)
                                                       throws java.io.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
        例外:
        java.io.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 java.awt.image.BufferedImage mixImage​(java.awt.image.BufferedImage image,
                                                            java.lang.String text,
                                                            int xAxis,
                                                            int yAxis,
                                                            int maxW,
                                                            int maxH,
                                                            java.awt.Font font,
                                                            java.awt.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 java.awt.image.BufferedImage mixImage​(java.awt.image.BufferedImage image,
                                                            java.lang.String text,
                                                            int xAxis,
                                                            int yAxis,
                                                            java.awt.Font font,
                                                            java.awt.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​(java.lang.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) 元の色をイメージの端から自動取得(白決め打ちでない)属性追加