БлогNot. Обработка изображений на PHP

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

Эта статья о масштабировании рисунков при загрузке была неплохой для своего времени, но устарела.

Здесь я приведу небольшую библиотеку функций для выполнения основных операций с изображениями в форматах GIF, JPG или PNG средствами современных версий PHP7.

С изображениями я работаю как с контейнерами (массивами) вида

[
 'img' => ресурс изображения, 
 'width' => ширина изображения в пикселях, 
 'height' => высота изображения в пикселях, 
 'type' => тип, равный 1 (GIF), 2 (JPG) или 3 (PNG), 
 'filename' => имя файла для сохранения
]

то есть, к самому ресурсу картинки нужно обращаться как $img['img'].

Вот список основных функций скрипта, в основном, все они возвращают новый ресурс изображения в указанном формате.

  • createImg ($filename) - создать и вернуть ресурс изображения из $filename. Корректность MIME-типа проверяется не через тип файла, а через finfo_file;
  • saveImg ($img) - сохранить ресурс из контейнера $img в файл на сервере;
  • scaleImg ($img, $scale) - масштабировать ресурс из контейнера $img в $scale раз;
  • cropImg ($img, $x, $y, $w, $h) - обрезать картинку из ресурса $img с начальных координат $x, $y (пиксели или %) при размерах вырезаемой части $w, $h (пиксели);
  • rotateImg ($img, $angle) - повернуть изображение из ресурса $img на заданный в градусах угол $angle;
  • flipImg ($img, $mode) - отразить изображение из ресурса $img в одном из трёх режимов $mode;
  • backgroundImg ($img, $x, $y, $file) - наложить на рисунок из $img фон из файла $file в позицию $x, $y (пиксели или %);
  • waterImg ($img, $x, $y, $watermark) - наложить watermark из файла $watermark в позицию $x, $y (пиксели или %) рисунка из ресурса $img (имеет смысл, если в ресурсе - PNG с прозрачным фоном);
  • filterImg ($img, $filtertype) - наложение на рисунок фильтра $filtertype;
  • filterImgColor ($img, $filtertype, $r, $g, $b) - наложение фильтра $filtertype с цветом $r, $g, $b
  • filterImgLight ($img, $filtertype, $val, $limit) - наложение фильтра $filtertype с уровнем $val, допустимым в пределах [-$limit;$limit];
  • makeTransparent ($tmp, $rgb) - сделать цвет $rgb прозрачным для ресурса изображения $tmp.

Так как для создания полноценного приложения требуется загрузка файлов со стороны пользователя на мой сервер, соответствующий сервис не размещаю, а только демку, где можно поиздеваться над всё той же Леной.

Большую часть объёма архива занимают тестовые картинки, сам скрипт index.php - менее 15 килобайт.

 Демо-скрипт "imgproc" (обработка изображений) в работе

 Скачать исходники скрипта на PHP (кодировка UTF-8) в архиве .zip, папка уже создана внутри архива (478 Кб)


теги: программирование php графика форматы

14.11.2020, 19:20; рейтинг: 52