Как уменьшить изображения при загрузке на сервер

Часто бывает необходимо обрезать изображения загружаемые на сервер пользователями. Нашел в интернете одну очень удобную функцию работающую безотказно.

 

function ResizeImage($image_from,$image_to, $fitwidth,$fitheight,$quality) {
 global $php_inc;
 $os=$originalsize=getimagesize($image_from);
 // если фотка JPEG или размеры, до которых надо уменьшить - ничего не делать
 if($originalsize[2]!=2 && $originalsize[2]!=3 && $originalsize[2]!=6 && ($originalsize[2]<9 
   or $originalsize[2]>12)) {
 return false;
 }
 if($originalsize[0]>$fitwidth or $originalsize[1]>$fitheight) {
 $h=getimagesize($image_from);
 if(($h[0]/$fitwidth)>($h[1]/$fitheight))
 {
 $fitheight=$h[1]*$fitwidth/$h[0];
 }else{
 $fitwidth=$h[0]*$fitheight/$h[1];
 }
 if($os[2]==2 or ($os[2]>=9 && $os[2]<=12))$i = ImageCreateFromJPEG($image_from);
 if($os[2]==3)$i=ImageCreateFromPng($image_from);
 $o = ImageCreateTrueColor($fitwidth, $fitheight);
 imagecopyresampled($o, $i, 0, 0, 0, 0, $fitwidth, $fitheight, $h[0], $h[1]);
 imagejpeg($o, $image_to, $quality); 
 chmod($image_to,0777);
 imagedestroy($o);
 imagedestroy($i);
 return 2;
 }
 if($originalsize[0]<=$fitwidth && $originalsize[1]<=$fitheight) {
 $i = ImageCreateFromJPEG($image_from);
 imagejpeg($i, $image_to, $quality); 
 chmod($image_to,0777);
 return 1;
 }
 }



ResizeImage($tmp,$path, $fitwidth='600',$fitheight = '600',$quality = '95');


Добавить комментарий


Защитный код
Обновить