Ejemplo n.º 1
0
 /**
 * @return stirng - Путь до изображения
 * @param string $file_name - Исходное изображение
 * @param CONST $scale_type - Способ масштабирования рисунка, одна из трех констант
 			stRateably	-	Масштабирование с учетом пропорций, относительно $width или $height
 			stSquare    - 	Обрезать по квадрату со стороной $width
 			stInSquare  - 	Вписать в квадрат со стороной $width
 * @param int $width - Ширина конечного изображения, если == 0 не учитывается
 * @param int $height - Высота конечного изображения, если == 0 не учитывается
 * @param string $watermark - Способ наложения водяного знака. Одно из нескольких значений:
 			0 		- 	Водяной знак не накладывается
 			1-9 	-	Водяной знак накладывается в одну из 9 позиций квадрата (см. документацию)
 * @desc МАКРОС: При необходимости масштабирует изображение под заданные параметры и
 				возвращает путь до кешированного файла.
 */
 public function resize($file_name, $scale_type, $width = 0, $height = 0, $watermark = 0)
 {
     if (!empty($file_name)) {
         if (system::checkVar($file_name, isAbsUrl)) {
             return $file_name;
         }
         $scale = !is_numeric($scale_type) ? constant($scale_type) : $scale_type;
         $dir = '/cache/img/' . $scale_type . '_' . $width . 'x' . $height . '_' . $watermark;
         $new_file = $dir . '/' . system::fileName($file_name);
         if (!file_exists(ROOT_DIR . $new_file)) {
             if (!is_dir(ROOT_DIR . $dir)) {
                 @mkdir(ROOT_DIR . $dir, 0777);
             }
             $img = new resizer($file_name, $scale, $width, $height);
             if (is_numeric($watermark) && $watermark > 0) {
                 $img->setWatermark(reg::getKey('/core/watermark'), $watermark);
             }
             $img->save(ROOT_DIR . $new_file);
         }
         if (file_exists(ROOT_DIR . $new_file)) {
             return $new_file;
         }
     }
 }