این کد رو میتونید برحسب نیازتون، کاملتر کنید و برای مثال، با توجه به نوع فرمت (PNG و...) از توابع مناسب برای خوندن و ذخیره کردن تصویر استفاده کنید:
function Resize($file, $size) {
if(!file_exists($file)) {
return;
}
$im = ImageCreateFromJPEG($file);
$quality = 100;
do {
ImageJPEG($im, $file, $quality--);
} while(filesize($file) > $size && $quality > 0);
ImageDestroy($im);
}
منظورتون از سایز، اندازه پیکسل عکس هستش یا سایز حجم فایل روی هارد دیسک؟ که فکر میکنم با توجه به کدها جوابم مورد دوم باید باشه و اگر مورد دوم هست، پارامتر ورودی size تابع به چه صورت باید داده بشه؟ بایت یا کیلوبایت؟
منظورم حجم فیزیکی فایل هست. باید مقدار رو برحسب بایت بدین.
سلام
تشکر بابت کد فوق العادتون.
ی سوالی برام پیش اومده.
به جای اینکه بیایم حجم تصویر رو کاهش بدیم ، انداره تصوی رو پایین میاریم.
اینطوری حجم تصویر هم پایین میاد.
به نظرتون این بهتر نیست.
آیا برای این کار کدی هم دارید؟
ممنون
پیدا کردم.
ممنون
function resizee($file){
$filename = $file;
list($width,$height) = getimagesize($filename);
$ww=round($width/4)+70;
$hh=round($height/4)+70;
$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 'png':
$source=imagecreatefrompng($filename);
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;
}
}
resizee('desert.jpg');
بهتره بجای Resized از Resampled استفاده کنید تا کیفیت تصاویر بهتر بشن.