Esempio n. 1
0
 /**
  * Трансформировать картинку.
  * 
  * @param string $val Путь или псевдопуть к картинке.
  * @param mixed $params Параметры в формате JSON.
  * Возможные значения ключей:
  *   'w' или 'width'      -   (int)   Максимальная ширина картинки.
  *   'h' или 'height'     -   (int)   Максимальня высота картинки.
  *   'r' или 'ratio'      -   (array) Пропорции картинки. Первый элемент -(int) ширина, второй - (int) высота
  *                                    или
  *                            (string)Строка в формате (int)x(int).
  *   'q' или 'quality'    -   (int)   Качество нового изображения. Число от 10 до 100. По умолчанию - 80.
  *   'p' или 'progressive'-   (bool)  Прогрессив. 1 - да, 0 - нет.
  *   'b' или 'background' -   (string)Цвет фона для прозрачных PNG картинок. Формат: FF00A1.
  * @return string
  */
 public static function transform($val, $params = array())
 {
     if (!empty($params)) {
         $urlParams = self::getParams($val);
         if (isset($urlParams['i']) and $urlParams['i'] !== '') {
             $newParams = array('i' => $urlParams['i']);
             $r = isset($params['ratio']) ? 'ratio' : 'r';
             if (isset($params[$r])) {
                 $params['c'] = is_array($params[$r]) ? $params[$r][0] . 'x' . $params[$r][1] : $params[$r];
             }
             unset($params[$r]);
             foreach ($params as $key => &$value) {
                 $k = substr($key, 0, 1);
                 $newParams[$k] = $value;
                 $value = $k . $value;
             }
             $path = explode('/', $urlParams['i']);
             $path[count($path) - 2] .= '/' . implode(self::$config['splitter'], $params);
             $url = implode('/', $path);
             self::$temp->setParams($url, $newParams);
             return $url;
         } else {
             return false;
         }
     } else {
         return $val;
     }
 }