protected function _processImage($gImage = null) { list($smallThumbWidth, $smallThumbHeight) = array($this->_smallThumbWidth, $this->_smallThumbHeight); list($thumbWidth, $thumbHeight) = array($this->_thumbWidth, $this->_thumbHeight); $thumbAspectRatio = $thumbWidth / $thumbHeight; if (is_null($gImage)) { $gImage = new Varien_Object(); } if ($gImage->getUnirgyImgFlag()) { return $gImage; } $_product = $this->getProduct(); if ($_product->getIsProductListFlag() || $gImage->getOnlyMainUrlFlag()) { $imageAttr = $_product->getIsProductListFlag() ? 'small_image' : 'image'; if ('thumb' == $gImage->getOnlyMainUrlFlag()) { $gImage->setThumb($this->helper('catalog/image')->init($_product, $imageAttr, $gImage->getFile())->setQuality(100)->resize($smallThumbWidth, $smallThumbHeight)->__toString()); $gImage->setThumbSize(array($smallThumbWidth, $smallThumbHeight)); $gImage->setMedium($gImage->getThumb()); $gImage->setMediumSize($gImage->getThumbSize()); $gImage->setUnirgyImgFlag(true); } else { $gImage->setMedium($this->helper('catalog/image')->init($_product, $imageAttr, $gImage->getFile())->setQuality(100)->resize($thumbWidth, $thumbHeight)->__toString()); $gImage->setMediumSize(array($thumbWidth, $thumbHeight)); $gImage->setUnirgyImgFlag(true); } return $gImage; } $imgHlp = $this->helper('catalog/image')->init($_product, 'image', $gImage->getFile())->setQuality(100); $imgHlp->__toString(); list($imgWidth, $imgHeight) = $imgHlp->getOriginalSizeArray(); if (!$imgHeight) { $imgHeight = 1; } $maxDim = max($imgWidth, $imgHeight); if ($maxDim > 2000) { $resizeRatio = $maxDim / 2000; $imgWidth = round($imgWidth / $resizeRatio); $imgHeight = round($imgHeight / $resizeRatio); } $imgAspectRatio = $imgWidth / $imgHeight; if ($imgAspectRatio > $thumbAspectRatio) { $imgHeight = round($imgWidth / $thumbAspectRatio); $zoomValue = $imgWidth / $thumbWidth; } else { $imgWidth = round($imgHeight * $thumbAspectRatio); $zoomValue = $imgHeight / $thumbHeight; } $midZoomValue = 1 + ($zoomValue - 1) / 2; $midImgWidth = round($thumbWidth * $midZoomValue); $midImgHeight = round($thumbHeight * $midZoomValue); if ($imgWidth < $thumbWidth || $imgHeight < $thumbHeight) { $midImgWidth = $imgWidth = $thumbWidth; $midImgHeight = $imgHeight = $thumbHeight; } list($img, $midImg, $medium, $thumb) = array($this->helper('catalog/image')->init($_product, 'image', $gImage->getFile())->setQuality(100)->resize($imgWidth, $imgHeight)->__toString(), $this->helper('catalog/image')->init($_product, 'image', $gImage->getFile())->setQuality(100)->resize($midImgWidth, $midImgHeight)->__toString(), $this->helper('catalog/image')->init($_product, 'image', $gImage->getFile())->setQuality(100)->resize($thumbWidth, $thumbHeight)->__toString(), $this->helper('catalog/image')->init($_product, 'image', $gImage->getFile())->setQuality(100)->resize($smallThumbWidth, $smallThumbHeight)->__toString()); $gImage->setMidImg($midImg); $gImage->setMidImgSize(array($midImgWidth, $midImgHeight)); $gImage->setImg($img); $gImage->setImgSize(array($imgWidth, $imgHeight)); $gImage->setMedium($medium); $gImage->setMediumSize(array($thumbWidth, $thumbHeight)); $gImage->setThumb($thumb); $gImage->setThumbSize(array($smallThumbWidth, $smallThumbHeight)); $gImage->setUnirgyImgFlag(true); return $gImage; }