Image
Класс для работы с изображением.
В мире столько зла: тираны, убийцы, насильники, террористы, создатели GD.
Методы
image->__construct()
Создаёт экземпляр изображения.
image->save()
Сохраняет изображение в файл. Вторым параметром можно указать качество от 0 до 100, где 0 наихудшее качество, а 100 - наилучшее. В случае успеха метод возвращает путь к созданному/обновлённому файлу.
Пример
$image = new Image('./test.jpg');
$image->resize(0, 300);
$image->save('./test3.jpg');
// или
$image->save('./%name.thumb.png', 50);
Макросы доступные в маске файла
| Макрос | Значение | Описание |
|---|---|---|
| %dir | ./folder | Директория файла. |
| %name | test | Имя файла. |
| %ext | jpg | Расширение файла. |
| %size | 33886 | Размер файла. |
| %hsize | 33.09 KB | Человеко-понятный размер файла. |
| %width | 751 | Ширина иизображения. |
| %height | 500 | Не поверите, но это высота изображения. |
| %mime | image/jpeg | MIME файла. |
| %type | jpeg | Тип файла. |
| %channels | RGB | Цветовая модель файла (ещё есть CMYK). |
| %resize.width | 450 | Ширина уменьшеного изображения (доступно только при использовании image->resize()). |
| %resize.height | 300 | Высота уменьшеного изображения (доступно только при использовании image->resize()). |
image->resize()
Изменяет размер. Если первых (ширина) либо второй (высота) параметр является нулём, то изображение изменяется сохраняя соотношение. Оба параметра могут быть указаны как проценты.
Оригинальное изображение, с которым будем работать.

Пример
$image = new Image('./test.jpg');
$image->resize(300, 150);
$image->save('./test1.jpg');

Уменьшаем по ширине сохраняя пропорции высоты
$image = new Image('./test.jpg');
$image->resize(300, 0);
$image->save('./test2.jpg');

Уменьшаем по высоте сохраняя пропорции ширины
$image = new Image('./test.jpg');
$image->resize(0, 300);
$image->save('./test3.jpg');

image->merge()
Обьеденяет два изображения. Первым параметром должен быть указан путь до изображения или ресурс. Вторым - можно задать дополнительные параметры.
Пример
$image = new Image('./test.jpg');
$image->merge('./goodgirl.png');
$image->save('./test4.jpg');

Пихаем картинку вниз (b) вправо (r)
$image = new Image('./test.jpg');
$image->merge('./goodgirl.png', array(
'position' => 'br'
));
$image->save('./test5.jpg');

Доступные параметры
| Парметр | Возмножные значения | По умолчанию | Описание |
|---|---|---|---|
| position |
tl tr bl br |
tl | Указывает расположение. |
| padding |
n n, n n, n, n, n |
0 | Выглядит и действует как padding в CSS. Устанавливает значение полей вокруг присоеденяемой картинки. |
| margin |
n n, n n, n, n, n |
0 | Выглядит и действует как margin в CSS. Устанавливает отступ от краёв присоеденяемой картинки. Можно указывать отрицательные значения. |
| background |
#rgb n #rgb n |
100 | Задаёт фон и его прозрачность. Цвет можно указывать как #RrGgBb, так и #RGB. |
| rotate | n | 0 | Поворачивает изображение. |
image->text()
Накладывает текст на изображение. В тексте можно использовать переменные значения доступные в image->save(). Вторым параметром можно задать дополнительные параметры (см. image->merge() плюс параметр font указывающий цвет и/или размер шрифта).
Пример
$image = new Image('./test.jpg');
$image->text('%name.%ext / %widthx%height / %hsize');
$image->save('./test6.jpg');

С дополнительными параметрами
$params = array(
'position' => 'br',
'padding' => '10',
'background' => '#000 25%',
'font' => '#fff 3'
);
$image = new Image('./test.jpg');
$image->text('%name.%ext / %widthx%height / %hsize', $params);
$image->save('./test7.jpg');

На всю ширину
$params = array(
'position' => 'br',
'padding' => '10 10 10 100%',
'background' => '#000 25%',
'font' => '#fff 3'
);
$image = new Image('./test.jpg');
$image->text('%name.%ext / %widthx%height / %hsize', $params);
$image->save('./test8.jpg');

Вылезаем за рамки
$params = array(
'position' => 'br',
'padding' => '10 10 10 100%',
'background' => '#000',
'font' => '#fff 3',
'margin' => '0 0 -32 0'
);
$image = new Image('./test.jpg');
$image->text('%name.%ext / %widthx%height / %hsize', $params);
$image->save('./test9.jpg');
