PECL::Imagickを簡単に使えるライブラリを作った
Imagickを使いやすくするImagick_Thumbnailerというライブラリを作ってみました。
早速CodeReposに公開しています。初コミット!
http://coderepos.org/share/browser/lang/php/Imagick_Thumbnailer/trunk/Imagick_Thumbnailer.php
概要
画像をリサイズしたいだけ、トリミングしたいだけなのにやることが多くてメンドクサイ!という人向けです。
PECL::Imagickのラッパーとして動作するのでImagickは必須、もちろんImageMagickも。動作を確認しているバージョンは下記になります。public, privateなどのアクセス修飾子使ってるのでPHP5でしか動作しないと思います。
- ImageMagick
- 6.4.2-1
- Imagick
- 2.1.1
- PHP
- 5.2.6
使い方
リサイズ
普通にサイズしてしてやる方法。
アスペクト比は固定でリサイズするので、
変な数値の場合は小さい値(長辺じゃない方)に合わせてリサイズします。
<?php $image = new ImagickThumbnailer('test.jpg'); $image->resize(160,120); $image->show();
パーセンテージで指定する方法。
<?php $image = new ImagickThumbnailer('test.jpg'); $image->resizePercent(30); $image->show();
トリミング
自分で切り取る範囲を指定してやる方法。
下の例だと、100x100の画像を元画像の左端から70px, 上から90pxのところからトリミングします。よくある指定方法ですね。
<?php $image = new ImagickThumbnailer('test.jpg'); $image->crop(100, 100, 70, 90); $image->show();
大きさだけ指定して真ん中を中心に範囲指定する方法。
<?php $image = new ImagickThumbnailer('test.jpg'); $image->cropFromCenter(100, 100); $image->show();
セピア調
sepia()に数値を与えると階調が変わる(と思います)
<?php $image = new ImagickThumbnailer('test.jpg'); $image->sepia(); $image->show();
ポラロイド風
ImageMagick6.3.8以上が必須となります。
<?php $image = new ImagickThumbnailer('test.jpg'); $image->polaroize(); $image->show();
課題
- エラー処理をImagickのExceptionに丸投げ
- 基本的に引数エラーとかはExceptionで返ってくるので任せてますが果たしてそれでよいのか
- 複数ファイルの扱い
- 今は1ファイルずつしか処理できないのですがマニュアルの例にあるようにディレクトリ下の全てのファイルを一括処理できるようにしたい