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 = array(5,5))

画像にウォーターマークを加える。

静的 はい
パラメータ
パラメータ デフォルト 説明
$filename 必須 ウォーターマークとして使用する画像の場所。
$position Required The position of the watermark, accepts "(top|center|middle|bottom|<int>) (left|center|middle|bottom|<int>)".
$padding
array(5,5)
The amount of padding from the edges, in pixels. The first value defines the vertical padding, the second value the horizontal padding. You can also pass an integer if both have the same value.
返り値 Image_Driver
// 画像の左上の角に 15 ピクセルのパディングでウォーターマークを加える
Image::load('filename.gif')
	->watermark('watermark.ext', "top left", 15);

// Watermarks the image in the top left corner with top-padding of 5px and a left-padding of 10px
Image::load('filename.gif')
	->watermark('watermark.ext', "top left", array(5, 10));

// Watermarks the image in the bottom right corner
Image::load('filename.gif')
	->watermark('watermark.ext', "bottom right");

// 画像の中央にウォーターマークを加える
Image::load('filename.gif')
	->watermark('watermark.ext', "center middle");
// "center middle" is identical to "center center", "middle middle", or "middle center"

// Watermarks the image in a fixed location, upper left at [10,40], with the default 5px padding
Image::load('filename.gif')
	->watermark('watermark.ext', "10 40");

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()

画像タイプを表し、オブジェクト生成時に設定されるファイルの拡張子を返します。

Static Yes
パラメータ N/A
返り値 string
// 'jpg' を返す
$ext = Image::load('uploaded_file.jpg')
	->extension();

// Returns 'jpg', using the static instance
Image::forge($config, 'uploaded_file.jpg');
$ext = Image::extension();

// Save a PNG as a 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');