Image_Transform を使う際に最初にすることは、 Image_Transform_Driver のインスタンスを 静的メソッド factory() で作ることです。 このメソッドにドライバ名を渡せば、インスタンスを取得することができます。
ドライバ名を省略することもできます。省略した場合、Image_Transform は Imagick2、GD そして Imlib の順にドライバを探し、 最初に見つかったものを使用します。
これで、あとは load() にファイル名を指定すれば画像を読み込めるようになります。 倍率変更用のメソッドのひとつを使用したら、最後は save() で保存します。
倍率変更用のメソッドを、一度に複数使用することはできません。 ひとつ使用したら、まず保存する必要があります。
画像の縮小
<?php
require_once 'Image/Transform.php';
// 変換ドライバオブジェクトを作成します
$it = Image_Transform::factory('GD');
// 元ファイルを読み込みます
$it->load('beach-large.jpg');
// 150px に縮小します
$it->scaleMaxLength(150);
// 別のファイルとして保存します
$it->save('beach-150px.jpg');
?>
上の例では一切エラーチェックをしていません。 すべてのメソッドは PEAR_Error オブジェクトを返します。 返り値をチェックするか、あるいは PHP 5 の場合はグローバル PEAR エラーハンドラを設定してエラー時に例外をスローさせるようにします。 これは、発生することがわかっているけれどもあえて無視している というエラーがある際などに問題となります。 (特に他のパッケージと併用する場合など) この方式を使用する際には注意しましょう。
画像の倍率変更に、エラーチェックを追加したもの
<?php
require_once 'Image/Transform.php';
// 変換ドライバオブジェクトを作成します
$it = Image_Transform::factory('GD');
if (PEAR::isError($it)) {
die($it->getMessage());
}
// 元ファイルを読み込みます
$ret = $it->load('beach-large.jpg');
if (PEAR::isError($ret)) {
die($ret->getMessage());
}
// 150px に縮小します
$ret = $it->scaleByLength(150);
if (PEAR::isError($ret)) {
die($ret->getMessage());
}
// 別のファイルとして保存します
$ret = $it->save('beach-150px.jpg');
if (PEAR::isError($ret)) {
die($ret->getMessage());
}
?>