معمولا تصاویر آپلودی کاربران تازه کار، دچار اشکالاتی از جمله حجم بالا است.
بهترین راهکار در اینگونه موارد انجام عملیات توسط سرور است تا کاربر احساس آسودگی بیشتری داشته باشد. ساده ترین راه در مورد کم حجم کردن تصویر استفاده از توابع GD در php است که تقریبا روی تمام سرورهای فعال نصب شدهاند.
جهت کم حجم کردن تصاویر به مقدار دلخواه به یک تابع و چند خط کد نیاز دارید. روش کار اینگونه است که از طریق تابع imagecopyresampled پیکسل های تصویر را با کیفیت قابل قبولی کاهش خواهیم داد.
ما با استفاده از آخرین توابع GD میتوانیم تصویر را با فرمت های مختلفی دریافت کنیم. در تابع زیر ابتدا بر اساس نوع فایل یک resource از تصویر ایجاد میکنیم. سپس بر اساس مقدار حداکثر طول و عرض در نظر گرفته شده اقدام به ساخت تصویر جدید با پسوند jpg میکنیم.
این تابع دو مقدار اصلی دریافت میکند:
اول آدرس تصویر در سرور محلی یا غیر محلی.
دوم محل ذخیره سازی عکس که میتواند همان آدرس قبلی تصویر در سرور باشد.
function picture_lower_size($image_adress, $save_adress) { // published by mmpg.ir $max_width = 400; // max width of image (pixel) $max_height = 400; // max height of image (pixel) $file_type = mime_content_type($image_adress); switch ($file_type) { // check the file type for create resource case 'image/jpeg': $original_image = imagecreatefromjpeg($image_adress); break; case 'image/png': $original_image = imagecreatefrompng($image_adress); break; case 'image/gif': $original_image = imagecreatefromgif($image_adress); break; default: die("wrong format"); break; } $dims = getimagesize($original_image); $orginalWidth = $dims[0]; $orginalHeight = $dims[1]; if ($orginalWidth > $max_width) { // set new width if it is large $thumbHeight = ($orginalHeight * $max_width) / $orginalWidth; $thumbWidth = $max_width; } if ($orginalHeight > $max_height) { // set new height if it is large $thumbWidth = ($orginalWidth * $max_height) / $orginalHeight; $thumbHeight = $max_height; } $thumb = imagecreatetruecolor($thumbWidth, $thumbHeight); imagefilledrectangle($thumb, 0, 0, $thumbWidth, $thumbHeight, 0xFFFFFF); imagecopyresampled($thumb, $original, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $orginalWidth, $orginalHeight); // save the file as jpeg format imagejpeg($thumb, $save_adress); }