Плюшка CMS#

/* Создан для быстрой разработки приложений */
Скачать Демо

23. Работа с изображениями (класс picture)

26.09.2015

Предназначен для обработки изображений. В «арсенал» класса входит всего два полезных инструмента: масштабирование и наложение водного знака.

Реализацию класса можно найти в файле /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").