23. Работа с изображениями (класс picture)
Предназначен для обработки изображений. В «арсенал» класса входит всего два полезных инструмента: масштабирование и наложение водного знака.
Реализацию класса можно найти в файле /core/picture.php.
Работа происходит следующим образом: сначала загружается исходное изображение, затем задаются параметры обработки и затем вызывается процедура save(), которая выполняет все необходимые действия и сохраняет новый файл. После этого можно назначить новые правила обработки и вновь вызвать метод save(), которых сохранит другую копию обраотанного изображения.
Типичный алгоритм использования класса:
core::import('picture');
$picture=new picture('public/myfile.jpg'); //загрузить исходный файл
if(controller::$error) return false; //если файл не является рисунком, то будет ошибка
$picture->resize(400,'<800'); //изменение размеров
if(!$picture->save('public/myfile')) return false; //сохранить изображение в файл /public/myfile.jpg
В конструктор можно передать не строку с именем файла, а массив, содержащий информацию о загруженном в submit-дейстии файле (это информация из $_FILES):
class sController extends controller {
public function actionIndex() {
$form=core::form();
$form->file('myFile','My file');
$form->submit(LNGContinue,'submit');
return $form;
}
public function actionIndexSubmit($data) {
core::import('core/picture');
$picture=new picture($data['myFile']);
...
}
}
Методу save() нужно передать имя файла относительно корня сайта и, во втором параметре, число от 1 до 100 - качество изображения для формата JPEG.
Имя файла может содержать расширение (например "public/my-file.gif"), тогда изображение будет сохранено в соответствующем формате, если же расширения нет (например "public/my-file"), то будет использваться формат исходного файла. Метод save() возвращает имя файла без пути, но с расширением ("my-file.gif").