/** * Пакетное создание превью * * @param string $original Полный путь до оригинального изображения * @param stirng $path Путь до папки назначения * @param array $params Массив параметров * @param stirng $ext Расширение изображений-результатов */ public static function create_thumbs($original, $path, $params, $ext = 'jpg', $quality = 80) { //определим ориентацию изображения - портретная или альбомная list($width, $height) = getimagesize($original); if ($width > $height) { $o = 'album'; //альбомная ориентация } else { if ($height > $width) { $o = 'portret'; //портретная ориентация } else { $o = 'square'; //квадратное } } $thumb_params = array(); $thumb_params['check_size'] = 1; $thumb_params['quality'] = $quality; $thumb_params['type'] = IMAGETYPE_JPEG; foreach ($params as $key => $thumb) { $thumb_params['resize'] = 1; if ($thumb[0] && $thumb[0] > 0) { $thumb_params['width'] = $thumb[0]; } if (isset($thumb[1])) { $thumb_params['height'] = $thumb[1]; } //если указана только ширина if (isset($thumb_params['width']) && !isset($thumb_params['height'])) { //если исходная ширина меньше требуемой - не изменяем размеры if ($width <= $thumb_params['width']) { $thumb_params['resize'] = 0; } switch ($o) { case 'album': case 'square': default: //уменьшаем по большей стороне $thumb_params['method'] = THUMBNAIL_METHOD_SCALE_MAX; break; case 'portret': //уменьшаем по меньшей стороне $thumb_params['method'] = THUMBNAIL_METHOD_SCALE_MIN; $thumb_params['height'] = floor($height * $thumb_params['width'] / $width); break; } } else { if (isset($thumb_params['height']) && !isset($thumb_params['width'])) { //если исходная высота меньше требуемой - не изменяем размеры if ($height <= $thumb_params['height']) { $thumb_params['resize'] = 0; } switch ($o) { case 'album': case 'square': default: //уменьшаем по меньшей стороне $thumb_params['method'] = THUMBNAIL_METHOD_SCALE_MIN; break; case 'portret': //уменьшаем по большей стороне $thumb_params['method'] = THUMBNAIL_METHOD_SCALE_MAX; break; } } else { if (isset($thumb_params['width']) && isset($thumb_params['height'])) { switch ($o) { case 'album': case 'square': default: if ($width > $thumb_params['width']) { //уменьшаем по большей стороне $thumb_params['method'] = THUMBNAIL_METHOD_SCALE_MIN; Thumbnail::output($original, $path . '/' . $key . '.' . $ext, $thumb_params); } else { $thumb_params['resize'] = 0; } break; case 'portret': if ($height > $thumb_params['height']) { //уменьшаем по меньшей стороне $thumb_params['method'] = THUMBNAIL_METHOD_SCALE_MIN; Thumbnail::output($original, $path . '/' . $key . '.' . $ext, $thumb_params); } else { $thumb_params['resize'] = 0; } break; } // обрезаем $thumb_params['method'] = THUMBNAIL_METHOD_CROP; if ($thumb_params['resize'] == 1) { $original = $path . '/' . $key . '.' . $ext; } } } } Thumbnail::output($original, $path . '/' . $key . '.' . $ext, $thumb_params); } }