Intervention Image - простая библиотека для работы с изображениями

php
библиотека
разработка

У каждого программиста есть свой набор библиотек, для рутинных операций. Например, работа с изображениями. На ваш суд представлю еще одну – Intervention Image.

Из плюсов следует отметить тесную интеграцию с модным ныне Фреймворком Laravel.

Как пишут автору этой библиотеке. Intervention Image является PHP библиотекой с открытым исходным кодом для обработки изображений и манипуляции с ним. Обеспечивает более простой и выразительный способ создания, редактирования и комбинирования изображений и поддерживает в настоящее время два наиболее распространенных библиотек обработки изображений GD и Imagick.

Чтение

1
$img = Image::make('foo/bar/baz.jpg');

Создание

1
$img = Image::canvas(800, 600, '#ccc');

Наложение изображения

1
$img = Image::make('foo.jpg')->resize(320, 240)->insert('watermark.png');

Сохранение

1
Image::make('foo.jpg')->resize(300, 200)->save('bar.jpg');

HTTP Responses

1
2
$img = Image::canvas(800, 600, '#ff0000');
echo $img->response('jpg', 70);

Загрузка

1
2
3
$img = Image::make($_FILES['image']['tmp_name']);
$img->fit(300, 200);
$img->save('foo/bar.jpg');

Применение фильтров

1
$img->filter(new DemoFilter(45));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class DemoFilter implements FilterInterface
{
    /**
     * Default size of filter effects
     */
    const DEFAULT_SIZE = 10;

    /**
     * Size of filter effects
     *
     * @var integer
     */
    private $size;

    /**
     * Creates new instance of filter
     *
     * @param integer $size
     */
    public function __construct($size = null)
    {
        $this->size = is_numeric($size) ? intval($size) : self::DEFAULT_SIZE;
    }

    /**
     * Applies filter effects to given image
     *
     * @param  Intervention\Image\Image $image
     * @return Intervention\Image\Image
     */
    public function applyFilter(\Intervention\Image\Image $image)
    {
        $image->pixelate($this->size);
        $image->greyscale();

        return $image;
    }
}

Кеширование

1
2
3
$img = Image::cache(function($image) {
    $image->make('public/foo.jpg')->resize(300, 200)->greyscale();
});