Imagineで簡単に画像操作する

More than 3 years have passed since last update.

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


試してみる


元画像

sample_320_240.png

sample_320_240.png


  • 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()で出力された画像。

sample_resize_200_200.jpg

sample_resize_200_200.jpg


  • w200 x h200 に縮小された。

  • new Imagine\Image\Box()で指定したサイズにリサイズされるっぽい。
    ※ 縦横比は維持されない。


thumbnail()で出力された画像。

sample_thumbnail_200_200.jpg

sample_thumbnail_200_200.jpg


  • 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