Работа с изображениями

Класс посвящен первичной обработки и проверки изображений. Для обработки можно применять цепочечные функции через объект, или работать через статичные объекты, переключая активное изображение

Создание изображения

Допускается возможность создать изображение через ссылку на файл либо через передачу строки. При загрузке - тестируется на наличие памяти, выделяемой скриптом для загрузки изображения, чтобы выдать красивый Exception вместо нативного. А также определяется - нужно ли поворачивать исходное изображение, если такой параметр может быть заложен в формат

new c\pic($filename,$autorotate=true);
c\pics::createPic($filename,$autorotate=true, $pic=null);
c\pics::isPic($filename);

Проверяет изображение на соответствие одному из заложенных типов JPEG, GIF, PNG, WEBP через содержимое

c\pics::memoryTest($x,$y);

Тестирует, хватит ли внутренней памяти для возможности загрузить изображение с размерами $x и $y. Оптимизация подобрана опытным путем для версии PHP 5.5

Изменение размеров загруженного изображения

c\pics::resizeMaxWidth($x,$pic=null);
c\pics::resizeMaxHeight($y,$pic=null);
$pic->resizeMaxWidth($x);
$pic->resizeMaxHeight($x);

Изменяет размер изображения по максимальному параметру до указаной высоты или ширины

c\pics::resize($x,$y=null,$pic=null);
$pic->resize($x,$y=null);

Изменение размеров предварительно загруженного изображения до указаных координат.

Если $y не указан - он примет значение равное $x.

Результат сохраняется во внутреннюю память для дальнейшей обработки

c\pics::reizeBox($x,$y=null,$pic=null);
$pic->resizeBox($x,$y=null);

Изменение размеров предварительно загруженного изображения до указанных величин, сохраняя пропорции по максимальной из сторон

Если $y не указан - он примет значение равное $x.

Результат сохраняется во внутреннюю память для дальнейшей обработки

c\pics::resizeBoxFit($x,$y=null,$pic=null);
$pic->resizeBoxFit($x,$y=null);

Изменение размеров предварительно загруженного изображения до указанных величин, сохраняя пропорции по максимальной из сторон с обрезкой пустых областей

Если $y не указан - он примет значение равное $x.

Результат сохраняется во внутреннюю память для дальнейшей обработки

c\pics::resizeFit($x,$y=null,$pic=null);
$pic->resizeFit($x,$y=null);

...

Если $y не указан - он примет значение равное $x.

Результат сохраняется во внутреннюю память для дальнейшей обработки

Обработка изображения

c\pic::crop($x,$y,$width,$height,$pic=null);
$pic->crop($x,$y,$width,$height);

Обрезка ранее загруженного изображения начиная с координат $x, $y шириной и высотой $width и $height

Результат сохраняется во внутреннюю память для дальнейшей обработки

c\pics::cropCenter($x,$y=null,$pic=null);
$pic->cropCenter($x,$y=null);

Обрезка центральной части ранее загруженного изображения без изменения масштаба до указаных областей

Если $y не указан - он примет значение равное $x.

Результат сохраняется во внутреннюю память для дальнейшей обработки

c\pics::flip($direction='xy',$pic=null); // 'x' or 'y'
$pic->flip($direction='xy');

Отражение изображения по указанным осям. X, Y или по умолчанию XY

c\pics::rotate($angleClockWise,$bgcolor=0,$pic=null);
$pic->rotate($angleClockWise,$bgcolor=0);

Поворачивает изображение на произвольный угол по часовой стрелке с заполнением пустот указаным цветом

c\pics::addWatermark($x,$y,$watermarkFile,$opacity=100,$pic=null);
$pic->addWatermark($x,$y,$watermarkFile,$opacity=100);

Накладывает на ранее загруженое в памяти изображение водяной знак по адресу $watermark_file с прозрачностью $opacity и располагает в $x,$y процентах по отношению к исходному изображению с учетом размеров водяного знака

Результат сохраняется во внутреннюю память для дальнейшей обработки

Наложение эффектов на изображение

Размытие изображения методом Selective и Gaussian

c\pics::blurSelective($passes=1);
$pic->blurSelective($passes=1);
c\pics::blurGaussian($passes=1);
$pic->blurGaussian($passes=1);

Прочие эффекты яркости, контрастности, сепии

c\pics::brightness($level,$pic=null);
$pic->brightness($level);

c\pics::contrast($level,$pic=null);
$pic->contrast($level);

c\pics::smooth($level,$pic=null);
$pic->smooth($level);

c\pics::pixelate($blockSize=10,$pic=null);
$pic->pixelate($blockSize=10);

c\pics::desaturate($percentage,$pic=null);
$pic->desaturate($percentage);

c\pics::edges($pic=null);
$pic->edges();

c\pics::embos($pic=null);
$pic->embos();

c\pics::sepia($pic=null);
$pic->sepia();

c\pics::invert($pic=null);
$pic->invert();

c\pics::meanRemove($pic=null);
$pic->meanRemove();

c\pics::sketch($pic=null);
$pic->sketch();

Сохранение изображения

c\pics::save($filename,$quality=50,$pic=null);
$pic->save($filename,$quality=50);

Сохраняет ранее загруженое в память изображение в соответствии с расширением в имени итогового файла с указаным качеством

Для формата GIF - качество не влияет

c\pics::output($quality=50,$pic=null);
$pic->output($quality);

Выводит изображение в буфере на экран и завершает работу приложения. Формат вывода - PNG

c\pics::freeImage();
unset($pic);

Очищает ранее загруженное изображение из памяти

Создано при помощи сервиса Core CMS