From cf2d5efcbd4d4888f0436bd04592eb38c8f9ac52 Mon Sep 17 00:00:00 2001 From: Alexander Demidov Date: Fri, 4 Oct 2013 16:47:07 +0400 Subject: [PATCH] =?UTF-8?q?=D0=90=D0=B2=D1=82=D0=BE=D0=BC=D0=B0=D1=82?= =?UTF-8?q?=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=BE=D0=B5=20=D1=81=D0=BE=D0=B7?= =?UTF-8?q?=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B2=D0=B0=D1=80=D0=B8=D0=B0?= =?UTF-8?q?=D0=BD=D1=82=D0=BE=D0=B2=20=D0=B8=D0=B7=D0=BE=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D0=B6=D0=B5=D0=BD=D0=B8=D0=B9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- File.class.php | 9 ++++++++- Upload.class.php | 28 +++++++++++++++++++++------- 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/File.class.php b/File.class.php index 37ffa2d..b977888 100644 --- a/File.class.php +++ b/File.class.php @@ -68,8 +68,15 @@ abstract class File */ public function getImageVariant($size) { + /** + * @var $this Image + */ if (!array_key_exists($size, $this->variants)) { - $this->variants[$size] = new ImageVariant; + if ($this->getIsNoEmpty()) { + Upload::imageVariant($this, $size); + } else { + $this->variants[$size] = new ImageVariant(); + } } else { if (!is_object($this->variants[$size])) { $this->variants[$size] = ImageVariant::getInstance($this->variants[$size]); diff --git a/Upload.class.php b/Upload.class.php index 5d8aca9..2c59f51 100644 --- a/Upload.class.php +++ b/Upload.class.php @@ -21,7 +21,7 @@ abstract class Upload * @throws ErrorException * TODO: Рефакторинг: убрать параметр $force_create_variants */ - public static function image($class, $file, $force_create_variants = true, $quality = 95) + public static function image($class, $file, $force_create_variants = true) { /** * @var $image Image @@ -36,12 +36,11 @@ abstract class Upload $image = is_object($class) ? $class : new $class; $image->original_filename = $file['name']; $greagwar_image = self::getGreagwarImage($file['tmp_name']); - self::saveImage($image, $greagwar_image, $class::getMaxWidth(), $class::getMaxHeight(), $quality); + self::saveImage($image, $greagwar_image, $class::getMaxWidth(), $class::getMaxHeight()); if ($force_create_variants) { $sizes = $image->getSizes(); foreach ($sizes as $size) { - $size_parts = explode('x', $size); - self::saveImage($image->getImageVariant($size), $greagwar_image, $size_parts[0] ? : null, $size_parts[1] ? : null, $quality); + self::imageVariant($image, $size); } } // В случае, если был передан объект, возвращение результата не имеет значения @@ -49,14 +48,29 @@ abstract class Upload } /** + * @param $image Image + * @param $size string @ex '1200x960' + * @param $greagwar_image GreagwarImage + */ + public static function imageVariant($image, $size, $greagwar_image = null) + { + $image_variant = new ImageVariant(); + if (is_null($greagwar_image)) { + $greagwar_image = self::getGreagwarImage($image->path . DIRECTORY_SEPARATOR . $image->filename); + } + $size_parts = explode('x', $size); + self::saveImage($image_variant, $greagwar_image, $size_parts[0] ? : null, $size_parts[1] ? : null); + $image->variants[$size] = $image_variant; + } + + /** * @param $image ImageVariant|Image * @param $greagwar_image GreagwarImage * @param null $width * @param null $height - * @param int $quality * TODO: Сделать возможность передавать параметры для метода _resize() */ - public static function saveImage($image, $greagwar_image, $width = null, $height = null, $quality = 95) + public static function saveImage($image, $greagwar_image, $width = null, $height = null) { $greagwar_image = clone($greagwar_image); if ($width || $height) { @@ -67,7 +81,7 @@ abstract class Upload } } $image->type = $greagwar_image->guessType(); - $file_path = $greagwar_image->cacheFile($image->type, $quality, true); + $file_path = $greagwar_image->cacheFile($image->type, $quality = 95, true); $image->size = filesize($file_path); $path_parts = pathinfo($file_path); $image->path = preg_replace('#^' . Config::get('PATH_WEB_ROOT') . '/#', '', $path_parts['dirname']);