WEBアプリケーションを開発してるとアップロード画像のリサイズやトリミングなどすることが割と多いですよね。
そこでPHPで簡単に画像操作できそうなライブラリを試してみました。
公式サイト Imagine
Github https://github.com/avalanche123/Imagine
インストール
imagineのインストール
composer.jsonに以下のように記述する。
composer.json
{
"require": {
"imagine/imagine": "~0.6.0"
}
}
そんで、imagineをインストール。
$ composer install
依存モジュールの確認
imagineの動作には下記いずれかPHP拡張モジュールが必要らしい。
- GD2
- Imagick
- Gmagick
なので調べてみる。ぼくの場合はこんな感じだった。
$ php -i | grep -Ei '^(gd|imagic|gmagic)' | grep enabled
GD Support => enabled
imagick module => enabled
試してみる
元画像
- w320 x h240
スクリプトを書く
公式ドキュメントを見ながら簡単なスクリプトを書いてみる。
hoge.php
<?php
require 'vendor/autoload.php';
class MyImagine {
public static function factory() {
if (class_exists('Imagick')) {
return new Imagine\Imagick\Imagine();
}
if (class_exists('Gmagick')) {
return new Imagine\Gmagick\Imagine();
}
if (function_exists('gd_info')) {
return new Imagine\Gd\Imagine();
}
throw new Exception('Not found dependency modules');
}
}
$path = '/path/to/sample_320_240.png';
$imagine = MyImagine::factory();
$size = new Imagine\Image\Box(200, 200);
$imagine->open($path)
->resize($size)
->save('/path/to/sample_resize_200_200.jpg');
$imagine->open($path)
->thumbnail($size)
->save('/path/to/sample_thumbnail_200_200.jpg');
実行結果
$ php hoge.php
resize()で出力された画像。
- w200 x h200 に縮小された。
- new Imagine\Image\Box()で指定したサイズにリサイズされるっぽい。
※ 縦横比は維持されない。
thumbnail()で出力された画像。
- w200 x h150 に縮小された。
- new Imagine\Image\Box()で指定したサイズに収まるように縦横比を維持したままリサイズされるっぽい。
- thumbnail()メソッドはよく使いそうな感じ。
そのた
ドキュメント読んでるとすごく色んな操作ができるっぽい。
画像にwatermark(著作権表示)つけたり
http://imagine.readthedocs.org/en/latest/usage/introduction.html#image-watermarking
アニメGIF作ったり
http://imagine.readthedocs.org/en/latest/usage/layers.html#generate-animated-gif