Для упрощения наиболее распространенных операций с изображениями (изменить размер, обрезать, повернуть и т. п.) фреймворк
предоставляет класс waImage
. Этот класс использует стандартную библиотеку PHP (GD либо Imagick) для обработки изображений.
Тип используемой библиотеки задается при генерации экземпляра класса. По умолчанию используется библиотека GD. Внимание:
для работы с анимированным GIF нужно использовать только расширение Imagick.
Примеры генерации экземпляра waImage
из файла изображения:
// GD $img = waImage::factory("/tmp/1.jpg"); $img = waImage::factory("/tmp/1.jpg", waImage::Gd);
//Imagick $img = waImage::factory("/tmp/1.jpg", waImage::Imagick);
Изменение размеров изображения
// изменение размеров до 100 пикселей по большей стороне, т. е. вписать в прямоугольник $img->resize(100, 100); // изменение размеров до 100x100 пикселей без сохранения пропорций $img->resize(100, 100, waImage::NONE); // вписать в прямоугольник $img->resize(100, 200, waImage::AUTO); // изменение размеров до 100 пикселей по меньшей стороне, т. е. полностью заполнить прямоугольник $img->resize(100, 100, waImage::INVERSE); // изменение размеров до 100 пикселей по меньшей стороне $img->resize(100, 100, waImage::WIDTH); // равноценно предыдущему $img->resize(100, false);
Вырезание части изображения
// вырезать квадрат размером 100x100 пикселей в центре изображения $img->crop(100,100); // вырезать квадрат из левого верхнего угла изображения $img->crop(100,100, 0, 0); // вырезать квадрат слева посередине $img->crop(100,100, 0 , waImage::CENTER); // вырезать квадрат нижнего правого угла изображения $img->crop(100,100, waImage::BOTTOM , waImage::BOTTOM);
Вращение
$img->rotate(270); // (-360;360)
Чёткость изображения
// метод принимает в качестве параметра значение от 1 до 100 включительно, //означающее качество изображения в процентах от чёткости оригинального изображения $img->sharpen($amount);
Сохранение изменённого изображения в файл
$img->save('/tmp/2.jpg');
Пример кода создания файла-эскиза размером 100x100 пикселей из центральной части исходного изображения:
waImage::factory("/tmp/1.jpg")->resize(100, 100, waImage::INVERSE) ->crop(100,100) // вызов метода без параметров: вырезание из центра ->save('/tmp/2.jpg');