PDA

View Full Version : تغییر اندازه تصویر بدون افت کیفیت



hamidrezawd
چهارشنبه 22 اسفند 1397, 09:29 صبح
سلام و عرض ادب و احترام
به این کدمن یه نگاه بندازین
من با استفاده از این تابع که نوشتم اندازه تصویرم رو عوض میکنم .
این تابع انددازه تصویر رو عوض میکنه و به اندازه دلخواه تبدیل میکنه ولی خیلی افت کیفیت داره .
آیا تابعی به غیر از imagecopyresized برای تغییر اندازه تصویر وجود داره ؟
به طوری که افت کیفیت کم باشه .
آیا تو تابع imagecopyresized میشه تنظیماتی انجام داد که کیفیتش رو ببره بالا .
ممنون از لطفتون







public function resizee($file,$size=900){

$filename = $file;
list($width,$height) = getimagesize($filename);
$w = $width;
$h = $height;
$r = $w / $h;
$ww=$size;
$hh=(int)$ww/$r;






$newwidth =$ww;
$newheight =$hh;
$thumb = imagecreatetruecolor($newwidth, $newheight);




$ext=substr(strrchr($file,'.'), 1);
switch($ext){


case 'jpg':
$source=imagecreatefromjpeg($filename);
imagecopyresized($thumb, $source,0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagejpeg($thumb,$file);
break;




case 'JPG':
$source=imagecreatefromjpeg($filename);
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagejpeg($thumb,$file);
break;




case 'jpeg':
$source=imagecreatefromjpeg($filename);
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagejpeg($thumb,$file);
break;




case 'JPEG':
$source=imagecreatefromjpeg($filename);
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagejpeg($thumb,$file);
break;




case 'png':
$source=imagecreatefrompng($filename);
imagealphablending($source,true);
imagesavealpha($source,true);
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagepng($thumb,$file);
break;




case 'PNG':
$source=imagecreatefrompng($filename);
imagealphablending($source,true);
imagesavealpha($source,true);
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagepng($thumb,$file);
break;


case 'gif':
$source=imagecreatefromgif($filename);
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagegif($thumb,$file);
break;


case 'GIF':
$source=imagecreatefromgif($filename);
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagegif($thumb,$file);
break;


}
}

ali_sed
چهارشنبه 22 اسفند 1397, 12:41 عصر
سلام از این تابع استفاده کنید:


imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y ,
int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h ) : bool