رفتن به مطلب

زوم اتوماتیک و بریدن عکس در پرستاشاپ


پست های پیشنهاد شده

---------------------------------------------------------------

post-366-14373018717857_thumb.jpg

فقط پرستاشاپ 1.5.2

روی لوکال تست کنید ، مسئولیت اشتباه و خرابکاری بر عهده خود استفاده کننده هست

 

اگه دقت کرده باشین وقتی عکسی آپلود میکنید برای یک محصول در پرستاشاپ اگه سایزش متناسب نباشه برای متناسب شدن عکس ، پرستاشاپ اتوماتیک حاشیه سفید اضافه میکنه .

 

حالا چطوری میشه کاری کرد این کارو نکنه و به جاش زوم کنه و عکس رو برش بده ؟!!! :D :)

 

خیلی ساده کافیست فایل/overrides/classes/ImageManager.php رو باز کنید با یک ویرایشگر متن . بعد کد هاشو پاک کنید و اینو به جاش اضافه کنید :

 


<?php
 

class ImageManager extends ImageManagerCore
{
 
   /**
    * Resize, cut and optimize image
    *
    * Zoom & Croop when the destination file name
    * contains the '_timthumb' phrase
    * (TimThumb ZoomCrop port)
    *
    * @param string $src_file Image object from $_FILE
    * @param string $dst_file Destination filename
    * @param integer $dst_width Desired width (optional)
    * @param integer $dst_height Desired height (optional)
    * @param string $file_type
    * @return boolean Operation result
    */
   public static function resize($src_file, $dst_file, $dst_width = null, $dst_height = null, $file_type = 'jpg', $force_type = false)
   {
       if (!file_exists($src_file))
           return false;
       list($src_width, $src_height, $type) = getimagesize($src_file);
 
       // If PS_IMAGE_QUALITY is activated, the generated image will be a PNG with .jpg as a file extension.
       // This allow for higher quality and for transparency. JPG source files will also benefit from a higher quality
       // because JPG reencoding by GD, even with max quality setting, degrades the image.
       if (Configuration::get('PS_IMAGE_QUALITY') == 'png_all'
           || (Configuration::get('PS_IMAGE_QUALITY') == 'png' && $type == IMAGETYPE_PNG) && !$force_type)
           $file_type = 'png';
         
       if (strpos($dst_file, '_btt')!==FALSE)
           $zoomCrop = true;        else
           $zoomCrop = false;
 
       if (!$src_width)
           return false;
 
       if ($zoomCrop == true) {
 
           if (!$dst_width) $dst_width = 0;
           if (!$dst_height) $dst_height = 0;
 
       } else {
 
           if (!$dst_width)
               $dst_width = $src_width;
           if (!$dst_height)
               $dst_height = $src_height;
       }   
 
 
       $src_image = ImageManager::create($type, $src_file);
 
       $width_diff = $dst_width / $src_width;
       $height_diff = $dst_height / $src_height;
 
       if ($zoomCrop==true) {
          
           if ($dst_width>0 && $dst_height<1) {
               $dst_height = floor ($src_height * ($dst_width / $src_width));
           } else if ($dst_height>0 && $dst_width<1) {
               $dst_width = floor ($src_width * ($dst_height / $src_height));
           }
                  
           $src_x = $src_y = 0;
           $src_w = $src_width;
           $src_h = $src_height;
             
           $cmp_x = $src_width / $dst_width;
           $cmp_y = $src_height / $dst_height;
             
           if ($cmp_x > $cmp_y) {
             
               $src_w = round (($src_width / $cmp_x * $cmp_y));
               $src_x = round (($src_width - ($src_width / $cmp_x * $cmp_y)) / 2);
             
           } else if ($cmp_y > $cmp_x) {
             
               $src_h = round (($src_height / $cmp_y * $cmp_x));
               $src_y = round (($src_height - ($src_height / $cmp_y * $cmp_x)) / 2);
             
           }
                         
       }
 
       else if ($width_diff > 1 && $height_diff > 1)
       {
           $next_width = $src_width;
           $next_height = $src_height;
       }
       else
       {
           if (Configuration::get('PS_IMAGE_GENERATION_METHOD') == 2 || (!Configuration::get('PS_IMAGE_GENERATION_METHOD') && $width_diff > $height_diff))
           {
               $next_height = $dst_height;
               $next_width = round(($src_width * $next_height) / $src_height);
               $dst_width = (int)(!Configuration::get('PS_IMAGE_GENERATION_METHOD') ? $dst_width : $next_width);
           }
           else
           {
               $next_width = $dst_width;
               $next_height = round($src_height * $dst_width / $src_width);
               $dst_height = (int)(!Configuration::get('PS_IMAGE_GENERATION_METHOD') ? $dst_height : $next_height);
           }
       }
 
       $dest_image = imagecreatetruecolor($dst_width, $dst_height);
 
       // If image is a PNG and the output is PNG, fill with transparency. Else fill with white background.
       if ($file_type == 'png' && $type == IMAGETYPE_PNG)
       {
           imagealphablending($dest_image, false);
           imagesavealpha($dest_image, true);
           $transparent = imagecolorallocatealpha($dest_image, 255, 255, 255, 127);
           imagefilledrectangle($dest_image, 0, 0, $dst_width, $dst_height, $transparent);
       }
       else
       {
           $white = imagecolorallocate($dest_image, 255, 255, 255);
           imagefilledrectangle ($dest_image, 0, 0, $dst_width, $dst_height, $white);
       }
 
       if ($zoomCrop==true)        	
           imagecopyresampled($dest_image, $src_image, 0, 0, $src_x, $src_y, $dst_width, $dst_height, $src_w, $src_h);
       else
           imagecopyresampled($dest_image, $src_image, (int)(($dst_width - $next_width) / 2), (int)(($dst_height - $next_height) / 2), 0, 0, $next_width, $next_height, $src_width, $src_height);
         
       return (ImageManager::write($file_type, $dest_image, $dst_file));
   }
 
}

 

 

 

حالا برین به قسمت تنظیمات /تصاویر ، در اینجا به نوع تصویری که میخواین اعمال بشه روی ویرایشش کلیک کنید و به آخرش _btt اضافه کنید . یعنی اگه برای عکس محصولات در صفحه اول اگه میخواین اینجوری باید بشه : home_default_btt

 

حالا باید در قالبتون هم تغییراتی بدین یعنی هر چی home_default هست پیدا کنید و به home_default_btt تغییر بدین .

 

تمام شد ، از این به بعد هر عکسی آپلود کنید برای گروه تصویری که تعیین کرده این حاشیه سفید نمیندازه . البته عکستون باید با کیفیت باشه و برای عکس های کوچیکتر از 600 پیکسل خوب جواب نمیده . همچنین برای برخی فروشگاه ها توصیه میشه فقط که نیاز دارن .

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

  • 5 months later...
  • 1 year later...

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

در حال بارگذاری


  • کاربران آنلاین در این صفحه

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×
×
  • اضافه کردن...