Работа с изображениями в PHP: обзор библиотек GD и Imagick
Обработка изображений — одна из частых задач веб-разработки. На PHP есть две основные библиотеки для работы с графикой: GD (встроенная) и Imagick (обёртка над ImageMagick). В этой статье разберём их возможности, установку и практические примеры.
Библиотека GD
GD — стандартное расширение PHP, доступное на большинстве хостингов. Позволяет создавать, изменять и сохранять изображения в форматах JPEG, PNG, GIF, WEBP.
Установка
В Ubuntu/Debian:
sudo apt install php-gd
sudo systemctl restart apache2
В Windows — раскомментируйте строку extension=gd в php.ini.
Основные функции GD
imagecreatefromjpeg(),imagecreatefrompng()— загрузка изображенияimagesx(),imagesy()— получение ширины и высотыimagecopyresampled()— масштабирование с ресемплингомimagefilter()— применение фильтров (размытие, негатив)imagettftext()— текст с TrueType шрифтомimagejpeg(),imagepng()— сохранение результата
Пример 1: Изменение размера изображения
<?php
$src = 'photo.jpg';
$dest = 'thumb.jpg';
$newWidth = 300;
// Загружаем исходное изображение
$img = imagecreatefromjpeg($src);
$width = imagesx($img);
$height = imagesy($img);
// Вычисляем новую высоту пропорционально
$newHeight = intval($height * $newWidth / $width);
// Создаём новое изображение
$thumb = imagecreatetruecolor($newWidth, $newHeight);
imagecopyresampled($thumb, $img, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
// Сохраняем
imagejpeg($thumb, $dest, 85);
imagedestroy($img);
imagedestroy($thumb);
echo "Готово: $dest";
?>
Пример 2: Наложение водяного знака
<?php
$mainImg = imagecreatefromjpeg('background.jpg');
$watermark = imagecreatefrompng('logo.png');
// Получаем размеры
$mW = imagesx($mainImg);
$mH = imagesy($mainImg);
$wW = imagesx($watermark);
$wH = imagesy($watermark);
// Позиция — правый нижний угол с отступом 10px
$dstX = $mW - $wW - 10;
$dstY = $mH - $wH - 10;
// Копируем водяной знак с прозрачностью
imagecopy($mainImg, $watermark, $dstX, $dstY, 0, 0, $wW, $wH);
// Сохраняем
imagepng($mainImg, 'result.png');
imagedestroy($mainImg);
imagedestroy($watermark);
?>
Библиотека Imagick
Imagick — объектно-ориентированная обёртка над мощным инструментом ImageMagick. Поддерживает более 200 форматов, сложные трансформации, работу с PDF, анимацию и цветовые профили.
Установка
sudo apt install imagemagick php-imagick
sudo systemctl restart apache2
Проверить установку:
<?php phpinfo(); ?>
Найдите секцию imagick.
Основные классы и методы
Imagick— основной класс для работы с изображениемreadImage()— загрузка файлаresizeImage()— изменение размераcropImage()— обрезкаcompositeImage()— наложение изображенийblurImage()— размытиеsetImageFormat()— конвертация формата
Пример 3: Масштабирование и обрезка (кроп)
<?php
$image = new Imagick('photo.jpg');
// Масштабируем до 800x600, сохраняя пропорции
$image->resizeImage(800, 600, Imagick::FILTER_LANCZOS, 1, true);
// Обрезаем центральную часть 400x400
$width = $image->getImageWidth();
$height = $image->getImageHeight();
$x = ($width - 400) / 2;
$y Также в библиотеке
Rate Limiting в Go (Golang): библиотеки, паттерны и примеры реализации
Работа с YAML в C++: библиотека yaml-cpp для парсинга и сериализации
Elasticsearch клиент для Go (Golang): полное руководство
JSON обработка в Java: библиотеки и инструменты для работы с JSON