Обработка изображений на 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 Кб)
14.11.2020, 19:20 [1520 просмотров]