Пример #1
0
 public static function getLocalLink($objImage, $intType = ImagesType::normal, $AbsoluteUrl = false)
 {
     list($intWidth, $intHeight) = ImagesType::GetSize($intType);
     if (!is_null($objImage)) {
         //See if image exists for chosen size
         $objImageThumbnail = Images::LoadByRowidSize($objImage->id, $intType);
         //If exists, return URL based on stored path
         if ($objImageThumbnail && $objImageThumbnail->ImageFileExists()) {
             return Images::GetImageUri($objImageThumbnail->image_path, $AbsoluteUrl);
         }
         //If we are to this point, we don't have the size of thumbnail we need, so can we create it on the fly
         //from the parent image
         $objParentImage = Images::LoadByParent($objImage->id);
         if ($objParentImage && $objParentImage->ImageFileExists()) {
             $objProduct = Product::model()->findByPk($objParentImage->product_id);
             $strPath = $objParentImage->image_path;
             if (!empty($strPath)) {
                 //We have a parent image
                 //Kick our thumbnail creation back to the processor
                 $blbImage = imagecreatefrompng(Images::GetImagePath($strPath));
                 $objEvent = new CEventPhoto('Images', 'onUploadPhoto', $blbImage, $objProduct, $objParentImage->index);
                 _xls_raise_events('CEventPhoto', $objEvent);
                 //At this point, the new size has been created, so look it up again just like above
                 //This time we should find it
                 //See if image exists for chosen size
                 $objImageThumbnail = Images::LoadByRowidSize($objImage->id, $intType);
                 //If exists, return URL based on stored path
                 if ($objImageThumbnail && $objImageThumbnail->ImageFileExists()) {
                     return Images::GetImageUri($objImageThumbnail->image_path, $AbsoluteUrl);
                 }
             }
         }
     }
     return "http://res.cloudinary.com/lightspeed-retail/image/upload/c_fit,h_" . $intHeight . ",w_" . $intWidth . "/v1389476545/no_product.png";
 }
 public static function resizeImage($imagePath, $intNewWidth, $intNewHeight)
 {
     if (strpos($imagePath, 'http') !== false) {
         return $imagePath;
     }
     //Get our original file from LightSpeed
     $strOriginalFile = $imagePath;
     $strTempThumbnail = Images::GetImageName($strOriginalFile, $intNewWidth, $intNewHeight, 'temp');
     $strNewThumbnail = Images::GetImageName($strOriginalFile, $intNewWidth, $intNewHeight);
     if (file_exists(Images::GetImagePath($strNewThumbnail))) {
         return Images::GetImageUri($strNewThumbnail, true);
     }
     $strOriginalFileWithPath = Images::GetImagePath($strOriginalFile);
     $strTempThumbnailWithPath = Images::GetImagePath($strTempThumbnail);
     $strNewThumbnailWithPath = Images::GetImagePath($strNewThumbnail);
     $image = Yii::app()->image->load($strOriginalFileWithPath);
     $image->resize($intNewWidth, $intNewHeight)->quality(_xls_get_conf('IMAGE_QUALITY', '75'))->sharpen(_xls_get_conf('IMAGE_SHARPEN', '20'));
     if (Images::IsWritablePath($strNewThumbnail)) {
         if (_xls_get_conf('IMAGE_FORMAT', 'jpg') == 'jpg') {
             $strSaveFunc = 'imagejpeg';
             $strLoadFunc = "imagecreatefromjpeg";
         } else {
             $strSaveFunc = 'imagepng';
             $strLoadFunc = "imagecreatefrompng";
         }
         $image->save($strTempThumbnailWithPath, false);
         try {
             $src = $strLoadFunc($strTempThumbnailWithPath);
             //We've saved the resize, so let's load it and resave it centered
             $dst_file = $strNewThumbnailWithPath;
             $dst = imagecreatetruecolor($intNewWidth, $intNewHeight);
             $colorFill = imagecolorallocate($dst, 255, 255, 255);
             imagefill($dst, 0, 0, $colorFill);
             if (_xls_get_conf('IMAGE_FORMAT', 'jpg') == 'png') {
                 imagecolortransparent($dst, $colorFill);
             }
             $arrOrigSize = getimagesize($strOriginalFileWithPath);
             $arrSize = Images::CalculateNewSize($arrOrigSize[0], $arrOrigSize[1], $intNewWidth, $intNewHeight);
             $intStartX = $intNewWidth / 2 - $arrSize[0] / 2;
             imagecopymerge($dst, $src, $intStartX, 0, 0, 0, $arrSize[0], $arrSize[1], 100);
             $strSaveFunc($dst, $dst_file);
             @unlink($strTempThumbnailWithPath);
         } catch (Exceiption $e) {
         }
         return Images::GetImageUri($strNewThumbnail, true);
     } else {
         Yii::log("Directory permissions error attempting to save " . $strNewThumbnail, 'error', 'application.' . __CLASS__ . "." . __FUNCTION__);
         return false;
     }
 }