このエントリーをはてなブックマークに追加

更新日: 2016年2月25日

実行時間: 0.0233

CI_Image_lib

 PHPモジュールの「GD/GD2」を利用して、JPEG、GIF、PNG画像のリサイズや、切り抜き、回転・反転、 合成といった画像処理を行うことができます。

 「GD/GD2」モジュールを利用せずに、「ImageMagick」または、「NetPBM」画像処理ライブラリを利用して 画像のリサイズ、切り抜き、回転・反転を行うことも可能です。 (画像の合成はできません。)

CI_Image_libのロード

 「CI_Loader」クラスの「library()」メソッドで「CI_Image_lib」 クラスをロードします。

    $this->load->library('image_lib');

 「CI_Image_lib」ライブラリクラスのロード時に設定情報を指定することも可能です。

    $this->load->library('image_lib', $config);

 また、動的に設定情報が変わらないのであれば、予め「application/config/image_lib.php」設定ファイルで 設定しておくことも可能です。

基本設定

 以下の設定項目は、全ての操作に共通の設定項目です。

設定項目 デフォルト 説明
image_library gd2 「gd」、「gd2」、「imagemagick」、「netpbm」のいずれかを指定します。
library_path なし 「image_library」に「imagemagick」、または、「netpbm」を指定した場合、必要なコマンドがインストール されているディレクトリパスを指定します。通常「/usr/bin」となるでしょう。「image_library」に「gd」、 または、「gd2」を指定した場合は設定不要です。
dynamic_output FALSE 「image_library」に「gd」、または、「gd2」を指定した場合で、処理した画像を保存せずに クライアントに出力する場合は「TRUE」を指定します。
source_image なし 処理する元の画像ファイルパスを絶対パス、または、ドキュメントルートからの相対パスで指定します。
new_image なし 画像処理後に画像ファイルを保存する画像ファイルパスを指定します。「image_library」に「gd」、 または、「gd2」を指定し、且つ、「dynamic_output」に「TRUE」を指定した 場合は、画像ファイルを保存しないため設定不要です。

 上記設定項目以外の設定は、それぞれの画像処理毎に説明します。

画像のリサイズ

resize()

 元の画像から、高さ・横幅をリサイズした画像を生成します。

設定項目 デフォルト 説明
width なし 新たに生成する画像の横幅(ピクセル)を指定します。
height なし 新たに生成する画像の高さ(ピクセル)を指定します。
quality 90 「image_library」に「imagemagick」、または、「gd」「gd2」を指定した場合の JPEG画像の圧縮率を「0」から「100」の間で指定します。 指定した値が小さいほどファイルサイズが小さくなりますが画質は低下します。
create_thumb FALSE TRUEを指定すると画像をサムネイルとしてリサイズします。 「dynamic_output」がFALSEである必要があります。 「new_image」が指定されていない場合は、「source_image」で指定した元のファイル名に 「thumb_marker」 で指定した文字列が付加されたファイル名として作成されます。 「new_image」が指定されている場合は、「new_image」で指定したファイル名に「thumb_marker」 で指定した文字列が付加されたファイル名として作成されます。
thumb_marker _thumb 「create_thumb」にTRUEが指定されている場合に作成される サムネイル画像ファイルのファイル名として付加する文字列を指定します。
maintain_ratio TRUE 元の画像の縦横比を維持するか指定します。
master_dim auto 「maintain_ratio」にTRUEを指定した際の、縦と横のどちらを基準にするかを 「width」、または、「height」で指定します。「auto」を指定すると自動でどちらを基準とするか決定されます。
  • サムネイル作成
  • $config = array(
        'source_image' => 'images/any.jpg',
        'width' => 50,
        'create_thumb' => TRUE,
    );
    $this->load->library('image_lib', $config);

    $this->image_lib->resize();
  • リサイズしてクライアントに出力
  • $config = array(
        'source_image' => 'images/any.jpg',
        'width' => 50,
        'dynamic_output' => TRUE,
    );
    $this->load->library('image_lib', $config);

    $this->image_lib->resize();

画像の切り抜き

crop()

 元の画像から画像を切り抜いて新しい画像を生成します。

設定項目 デフォルト 説明
width なし 新たに生成する画像の横幅(ピクセル)を指定します。
height なし 新たに生成する画像の高さ(ピクセル)を指定します。
x_axis なし 切り取る画像のX座標(左から)の始点ピクセル
y_axis なし 切り取る画像のY座標(上から)の始点ピクセル
maintain_ratio TRUE 元の画像の縦横比を維持するか指定します。
master_dim auto 「maintain_ratio」にTRUEを指定した際の、縦と横のどちらを基準にするかを 「width」、または、「height」で指定します。「auto」を指定すると自動でどちらを基準とするか決定されます。
  • 切り抜いた画像を保存
  • $config = array(
        'source_image' => 'images/any.jpg',
        'new_image' => 'images/cropped_any.jpg',
        'width' => 30,
        'x_axis' => 10,
        'maintain_ratio' => TRUE,
        'master_dim' => 'width',
    );
    $this->load->library('image_lib', $config);

    $this->image_lib->crop();
  • 切り抜いた画像をクライアントに出力
  • $config = array(
        'source_image' => 'images/any.jpg',
        'dynamic_output' => TRUE,
        'width' => 30,
        'height' => 10,
        'x_axis' => 10,
        'y_axis' => 10,
        'maintain_ratio' => FALSE,
    );
    $this->load->library('image_lib', $config);

    $this->image_lib->crop();

画像の回転・反転 一番上に戻る

rotate()

 元の画像を回転、または、反転させた画像を新しく生成します。

設定項目 デフォルト 説明
rotation_angle なし 回転させる場合は、「90」「180」「270」と90の倍数で指定します。(左回りの回転角度)
反転させる場合は、「vrt」(上下反転)、または、
hor」(左右反転)を指定します。
  • 上下反転した画像を保存
  • $config = array(
        'source_image' => 'images/any.jpg',
        'new_image' => 'images/vrt_any.jpg',
        'rotation_angle' => 'vrt',
    );
    $this->load->library('image_lib', $config);

    $this->image_lib->rotate();
  • 180度回転させた画像をクライアントに出力
  • $config = array(
        'source_image' => 'images/any.jpg',
        'dynamic_output' => TRUE,
        'rotation_angle' => 180,
    );
    $this->load->library('image_lib', $config);

    $this->image_lib->rotate();

画像の合成 一番上に戻る

watermark()

 元の画像上に他の画像を合成した新しい画像を生成します。
合成する画像は、テキストからテキスト画像を生成して合成する方法と、透過画像を合成する方法があります。

  • 画像の合成の共通設定
設定項目 デフォルト 説明
wm_type text テキスト画像を合成するか、透過画像を合成するか、「text」、または、「overlay」で指定します。
wm_padding 0 合成する画像の余白をピクセル単位で指定します。
wm_vrt_alignment B 合成する画像の縦位置を「T」(top)、「M」(middle)、
B」(bottom)で指定します。
wm_hor_alignment C 合成する画像の横位置を「L」(left)、「R」(right)、
C」(center)で指定します。
wm_vrt_offset 0 縦位置を微調整するピクセル値を指定します。 「wm_vrt_alignment」縦位置を「T」、または、「M」を指定している場合は下方向に指定したピクセル分下げます。 「B」を指定している場合は上方向に指定したピクセル分上げます。
wm_hor_offset 0 横位置を微調整するピクセル値を指定します。 「wm_hor_alignment」横位置を「L」、または、「C」を指定している場合は右方向に指定したピクセル分ずらします。 「R」を指定している場合は左方向に指定したピクセル分ずらします。

テキスト画像の合成

設定項目 デフォルト 説明
wm_text なし 合成するテキスト画像で利用する文字列を指定します。
wm_font_path なし 利用するTrueTypeフォントファイル(.ttf)のファイルパスを指定します。
(RedHat系Linuxでは、「/usr/share/fonts」ディレクトリ配下にインストールされています。)
wm_font_size 17 テキストのフォントサイズを指定します。
wm_font_color #ffffff テキストのフォントカラーを指定します。
wm_shadow_color なし テキストの影の色を指定します。
wm_shadow_distance 2 テキストの影の距離をピクセル値で指定します。
    $config = array(
        'source_image' => 'images/any.png',
        'dynamic_output' => TRUE,
        'wm_type' => 'text',
        'wm_vrt_alignment' => 'M',
        'wm_text' => 'テキスト',
        'wm_font_path' => '/usr/share/fonts/japanese/TrueType/sazanami-gothic.ttf',
        'wm_font_color' => '#ff0000',
    );
    $this->load->library('image_lib', $config);

    $this->image_lib->watermark();

 日本語のテキスト画像を合成する場合は、日本語フォントファイルを指定する必要があります。


透過画像の合成

設定項目 デフォルト 説明
wm_overlay_path なし 合成する透過画像のファイルパスを指定します。
wm_opacity 50 合成する画像の透過度を「0」から「100」で指定します。数値が高いほど
透過率が低く (色濃く) なります。
wm_x_transp 4 「wm_y_transp」と共に設定する項目で、指定された位置の画素の色を透過色(透明画像)にします。
例えば背景色を単一色にした「wm_overlay_path」で指定した画像の背景部分の画素位置を指定すると 背景が透明になります。
wm_y_transp 4 「wm_x_transp」と共に設定する項目です。
    $config = array(
        'source_image' => 'images/any.png',
        'wm_overlay_path' => 'images/overlay.png',
        'dynamic_output' => TRUE,
        'wm_vrt_alignment' => 'M',
        'wm_type' => 'overlay',
        'wm_opacity' => 30,
    );
    $this->load->library('image_lib', $config);

    $this->image_lib->watermark();

画像ファイル情報取得 一番上に戻る

get_image_properties($path = '', $return = FALSE)

 第一引数に指定した画像ファイルの情報を取得します。
 第二引数は、「TRUE」を指定する必要があります。

 第一引数に「NULL」を指定すると、設定値「source_image」で指定した画像ファイルの 情報を取得します。

 このメソッドは、他のメソッドの内部からも利用されており、第二引数に「FALSE」を 指定するのは内部利用のための指定のため、誤って「FALSE」を指定してしまうと 他のメソッドに影響し、思わぬ結果となってしまいますので注意してください。

 取得できる情報は以下になります。

項目 説明
width 280 横幅を示すピクセル値
height 30 高さを示すピクセル値
image_type 3 画像フォーマット識別する「1」、「2」、または、「3」の数値
1 : gif
2 : jpeg
3 : png
size_str width="280" height="30" HTMLタグのサイズ属性として利用できる文字列
mime_type image/png MIME-TYPEを表わす文字列
    $config = array(
        'source_image' => 'images/any.png',
    );
    $this->load->library('image_lib', $config);

    $info = $this->image_lib->get_image_properties(NULL, TRUE);
    print_r($info);
    /*
    Array (
        [width] => 280
        [height] => 30
        [image_type] => 3
        [size_str] => width="280" height="30"
        [mime_type] => image/png
    )
    */                        

設定の初期化 一番上に戻る

 一つのインスタンスで、複数の画像を処理する場合は、一つの処理が終了するたびに設定を初期化する必要があります。

clear()

 一つの処理が終了したら、前の設定をクリアします。

    $this->image_lib->clear();

initialize($props = array())

 新しい設定情報をインスタンスに再セットします。

    $this->image_lib->initialize($config);

エラー出力 一番上に戻る

display_errors($open = '<p>', $close = '</p>')

 デバッグ時などに利用するエラーメッセ字を取得します。

 第一引数には、メッセージの前に付加する文字列を
 第二引数には、メッセージの後に付加する文字列を指定します。
 デフォルトは、HTMLタグの「<p>」と「</p>」です。

    $err_msg = $this->image_lib->display_errors();

 エラーメッセージの多言語化

 デフォルトのエラーメッセージの文言は、「system/language/english/imglib_lang.php」言語ファイルに 定義されています。
 日本語など他の言語で定義して利用する場合は、デフォルトの言語ファイルを
「application/language/言語/」ディレクトリにコピーして編集します。

    $ cp system/language/english/imglib_lang.php application/language/japanese/
    $ vim application/language/japanese/imglib_lang.php
    $this->config->set_item('language', 'japanese');

    $this->load->library('image_lib');