Image クラス
Image クラスは、簡単にリサイズ、トリミングのような画像に共通の操作を加えるために使用されます。
制限事項
Image クラスはいくつかの知っておかなければならない制限があります。まず、 GD ライブラリの透過設定はかなりよくありません。
このため、Image::rotate() は、透過度をもった背景を扱うことができません。
imagemagick にも丸い画像の透過している隅が不透過になるという不具合があります。
GD で複数の変換を使用すると、異常な結果になることがあります。
設定
Image クラスは、次の設定オプションを受け付けます。fuel/core/config/image.php から fuel/app/config/image.php へファイルをコピーしてください。
driver |
string |
'gd'
|
有効なライブラリの名前。現在は 'gd' 、'imagemagick' そして 'imagick' が利用できます。
|
bgcolor |
string |
null
|
背景色を 16 進数で指定する (例: #ff0, #4f32de) 。背景を透過させたい場合は、null に設定します。
|
watermark_alpha |
integer |
75
|
画像に適用されたウォーターマークの透過度。0-100 の範囲で設定します。
|
quality |
integer |
100
|
jpeg 画像と png 画像の品質。
|
filetype |
string |
null
|
拡張子が指定されない場合に、優先する画像形式を定義します。null が設定されている場合は、元ファイルの拡張子を代わりに継承します。
|
imagemagick_dir |
string |
'/usr/bin/'
|
imagemagick の実行ファイルが置かれている場所。先頭にスラッシュを付加する必要があります。
|
temp_dir |
string |
'/tmp/'
|
編集中の画像ファイルを格納する一時的なディレクトリ。
|
temp_append |
string |
'fuel_image'
|
競合を避けるために一時的な画像ファイルに付加する文字列。
|
debug |
boolean |
false
|
ヘッダ設定をスキップし、画像のデバッグ情報を出力するデバッグモードを有効にする。
|
プリセット
プリセットは、設定の中でタスクのセットを定義することができる Image クラスの機能で、そのプリセットを呼び出すことができます。 例は以下の通り。
app/config/image.php では、
/**
* これらのプリセットは、コントローラの操作で呼び出すことができます。
*/
'presets' => array(
'mypreset' => array(
'bgcolor' => '#f00', // 背景色を赤にする
'filetype' => 'jpg', // jpeg として出力する。
'quality' => 75,
'actions' => array(
array('crop_resize', 200, 200),
array('watermark', '$1'), // 注意 $1 は変数です。
array('output', 'png')
)
)
)
コントローラでは、
// ここの 'watermark.gif' が array('watermark', '$1') の中の $1 として置き換わる
Image::load('filename.gif')->preset('mypreset', 'watermark.gif');
forge($config = array())
forge メソッドは、新しい Image_Driver インスタンスを作成します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$config |
array()
|
Image_Driver 用の設定オプションの配列 |
|
返り値 |
Image_Driver |
例 |
$image = Image::forge();
// または、オプション設定と一緒に
$image = Image::forge(array(
'quality' => 80
));
$image
->load('image.png')
->output('image.jpeg');
|
config($index, $value = null)
設定オプションの値を変更します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$index |
必須 |
設定するインデックスまたは設定オプションの配列。 |
$value |
null
|
$index が配列でない場合、設定する値。 |
|
返り値 |
Image_Driver |
例 |
// 画像をリサイズし、背景色を変更する。
Image::load('filename.gif')
->config('bgcolor', '#f00')
->resize(100, 100, true, true);
|
load($filename, $return_data = false, $force_extension = false)
load メソッドは、編集する画像の読み込みを行います。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$filename |
必須 |
読み込みたい画像ファイルのパス。 |
$return_data |
false
|
画像データを返すかどうか。GD でのみ動作します。 |
$force_extension |
false
|
画像の拡張子を ($force_extension として) 強制するかどうか。GD でのみ動作します。 |
|
返り値 |
Image_Driver |
例 |
// 画像を読み込む
Image::load('filename.gif');
// 画像をアップロードし、Image::load メソッドへ直接渡す
Upload::process(array(
'path' => DOCROOT.DS.'files'
));
if (Upload::is_valid())
{
$data = Upload::get_files(0);
// アップロードデータのファイルを使い、
// $force_extension として画像の拡張子を強制することができる。
Image::load($data['file'], false, $data['extension'])
->crop_resize(200, 200)
->save('image');
}
|
crop($x1, $y1, $x2, $y2)
座標またはパーセントで指定して画像をトリミングします。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$x1 |
必須 |
x 軸上の 第 1 座標の位置。 |
$y1 |
必須 |
y 軸上の 第 1 座標の位置。 |
$x2 |
必須 |
x 軸上の 第 2 座標の位置。 |
$y2 |
必須 |
y 軸上の 第 2 座標の位置。 |
|
返り値 |
Image_Driver |
例 |
// この例のために、画像の幅と高さは 200x200 とします
// 画像を (20, 20) から (180, 180) までトリミングする。
Image::load('filename.gif')
->crop(20, 20, 180, 180);
// 負の値を使って、画像を (40, 40) から (160, 160) までトリミングする。
Image::load('filename.gif')
->crop(40, 40, -40, -40);
// パーセントと負の値を使って、画像を (30, 30) から (170, 170) までトリミングする。
Image::load('filename.gif')
->crop('15%', '15%', '-15%', '-15%');
|
resize($width, $height = null, $keepar = true, $pad = false)
画像をリサイズします。幅か高さが null の場合、元のアスペクト比を維持してリサイズします。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$width |
必須 |
新しい画像の幅。 |
$height |
null
|
新しい画像の高さ。 |
$keepar |
true
|
true に設定された場合、元のアスペクト比と同じように保つ。 |
$pad |
false
|
true に設定し $keepar も true の場合、設定された背景色で画像を詰める。 |
|
返り値 |
Image_Driver |
例 |
// 絶対値を使ってリサイズ
Image::load('filename.gif')
->resize(100, 100);
// パーセントを使ってリサイズ
Image::load('filename.gif')
->resize('50%', '50%');
// 画像を合わせるように引き延ばす
Image::load('filename.gif')
->resize(100, 100, false);
// 入力されたサイズとアスペクト比を保つように、画像を詰める。
Image::load('filename.gif')
->resize(100, 200, true, true);
|
crop_resize($width, $height = null)
画像を指定した幅と高さに合うようにリサイズとトリミングをします。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$width |
必須 |
新しい画像の幅。 |
$height |
null
|
新しい画像の高さ。 |
|
返り値 |
Image_Driver |
例 |
// 例えば、300x200 の画像を 200x200 にトリミングするということは、上下 50px を削除するということになります
Image::load('filename.gif')
->crop_resize(200, 200);
|
rotate($degrees)
画像を時計回りに回転します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$degrees |
必須 |
画像を回転する角度。数値は正負とも受け入れます。 |
|
返り値 |
Image_Driver |
例 |
// 時計回りに 90 度回転
Image::load('filename.gif')
->rotate(90);
// 反時計回りに 90 度回転
Image::load('filename.gif')
->rotate(-90);
// (-359, 359) の範囲外の数値でも受け入れます。
Image::load('filename')
->rotate(450);
|
flip($direction)
画像を垂直方法と水平方向の両方、またはいずれか一方に反転します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$direction |
必須 |
反転する方向。"horizontal"、"vertical" または "both" を受け入れます。 |
|
返り値 |
Image_Driver |
例 |
// 垂直方向に反転
Image::load('filename.gif')
->flip('vertical');
// 水平方向に反転
Image::load('filename.gif')
->flip('horizontal');
// 垂直方向と水平方向に反転
Image::load('filename')
->flip('both');
|
watermark($filename, $position, $padding = 5)
画像にウォーターマークを加える。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$filename |
必須 |
ウォーターマークとして使用する画像の場所。 |
$position |
必須 |
ウォーターマークの位置、"(top|center|middle|bottom) (left|center|middle|bottom)" として指定ができます。 |
$padding |
5
|
端からのパディングをピクセルで指定します。 |
|
返り値 |
Image_Driver |
例 |
// 画像の左上の角に 15 ピクセルのパディングでウォーターマークを加える
Image::load('filename.gif')
->watermark('watermark.ext', "top left", 15);
// 画像の右下の角にウォーターマークを加える
Image::load('filename.gif')
->watermark('watermark.ext', "bottom right");
// 画像の中央にウォーターマークを加える
Image::load('filename.gif')
->watermark('watermark.ext', "center middle");
// "center middle" は、 "center center"、 "middle middle" または "middle center" と同じです。
|
border($size, $color = null)
画像に枠を加えます。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$size |
必須 |
枠のサイズをピクセルで指定します。 |
$color |
null
|
枠の色、デフォルトは背景色。 |
|
返り値 |
Image_Driver |
例 |
// 10px の黒い枠を作る
Image::load('filename.gif')
->border(10, '#000000');
// 15px の赤色、緑色、青色の枠を作る。
Image::load('filename.gif')
->border(5, '#FF0000')
->border(5, '#00FF00')
->border(5, '#0000FF');
|
mask($maskimage)
読み込んだ画像のアルファチャンネルをブレンドしたマスクを画像に適用します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$maskimage |
必須 |
マスクする画像の場所。 |
|
返り値 |
Image_Driver |
例 |
// mask.ext を使って画像をマスクする
Image::load('filename.gif')
->mask('mask.ext');
|
rounded($radius, $sides = null, $antialias = null)
画像に角丸を適用する。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$radius |
必須 |
画像に適用する角丸の半径。 |
$sides |
null
|
"tl tr bl br" の中で任意の組み合わせ (スペースで区切る) 、または null で全ての角に適用する。 |
$antialias |
1
|
実際の (角丸の) 円からアンチエイリアスを適用する距離。0 は、アンチエイリアス処理を行わない。 |
|
返り値 |
Image_Driver |
例 |
// 画像の全ての角に 10px の角丸を行う
Image::load('filename.gif')
->rounded(10);
// 画像の上側に 10px の角丸を行う
Image::load('filename.gif')
->rounded(10, "tl tr");
// 画像の全ての角にアンチエイリアス処理なしで 10px の角丸を行う
Image::load('filename.gif')
->rounded(10, null, 0);
|
sizes($filename = null)
現在読み込んでいるまたは $filename で指定された画像のサイズを返します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$filename |
null
|
サイズを取得したい画像の場所。 |
|
返り値 |
stdClass |
例 |
// 参考画像のサイズを取得
$sizes = Image::sizes('filename.gif');
// 返り値
Object
(
[width] => 500
[height] => 400
)
|
extension()
画像タイプを表し、オブジェクト生成時に設定されるファイルの拡張子を返します。
静的 |
いいえ |
パラメータ |
N/A
|
返り値 |
string |
例 |
// 'jpg' を返す
$ext = Image::load('uploaded_file.jpg')
->extension();
// PNG を JPG として出力する
Image::load('placeholder.png')
->output($ext);
|
grayscale()
画像をグレースケールに変更します。
静的 |
はい |
パラメータ |
N/A |
返り値 |
Image_Driver |
例 |
// グレースケールの画像
Image::load('filename.gif')
->grayscale();
|
save($filename = null, $permissions = null)
画像を保存します。オプションとしてパーミッションを設定することもできます。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$filename |
null
|
画像を保存する場所。もし、ファイル名が null の場合、読み込まれている画像のファイル名が使われます。もし、拡張子が追加されていない場合、読み込まれている画像の拡張子を基に追加されます。 |
$permissions |
null
|
unix 形式のパーミッション (例: 755) で指定します。null の場合は、パーミッションが設定されません。 |
|
返り値 |
void |
例 |
// filename2.ext に保存する
Image::load('filename.gif')
->save('filename2');
// filename2.png に保存する
Image::load('filename.gif')
->save('filename2.png');
// パーミッションを設定しながら、filename2.ext に保存する
Image::load('filename.gif')
->save('filename2', 755);
|
save_pa($prepend, $append = null, $extension = null, $permissions = null)
ファイル名の先頭と末尾、またはいずれかに文字を追加して同じ場所に保存します。オプションとしてパーミッションを設定することもできます。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$append |
必須 |
ファイル名の先頭に加える文字列。 |
$prepend |
null
|
ファイル名の末尾 (拡張子の前) に加える文字列。 |
$extension |
null
|
新しい画像の拡張子を設定できます。null の場合は、読み込まれた画像の拡張子が設定されます。 |
$permissions |
null
|
unix 形式のパーミッション (例: 755) で指定します。null の場合は、パーミッションが設定されません。 |
|
返り値 |
void |
例 |
// prepend_filename_append.gif として保存する
Image::load('filename.gif')
->save_pa('prepend_', '_append');
|
output($filetype)
画像をヘッダを設定して直接出力する。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$filetype |
null
|
出力する画像のファイル形式 (例: png, gif, jpeg など) 。デフォルトは、読み込んでいるファイルの拡張子。 |
|
返り値 |
void |
例 |
// gif として出力
Image::load('filename.gif')
->output();
// jpeg として出力
Image::load('filename.gif')
->output('jpeg');
|