بعضی مواقع نیاز است تعداد زیادی از تصاویر یک فولدر را به صورت یکجا تغییر بدیم . توسط php می توانیم این کار را عملی کنیم . کافیست که آدرس فولدر تصاویر را در اسکریپت زیر مشخص و اسکریپت php زیر را برای تغییر اندازه تصاویر اجرا کنید
در اول کد متغییر هایی برای آدرس منبع و مقصد فولدر تصاویر مشخص شده است که تغییر بدید ، همچنین می توانید عرض و طول تصاویر خروجی را تعیین کنید .
در تغییر اندازه تصاویر با php خروجی همه عکس ها به صورت متناسب خواهد بود و هیچگونه کشیدگی و له شدگی را در عکس نخواهید دید .
من حدود ۳۰۰ عکس را با این اسکریپت php تغییر اندازه دادم ، هر کدام از تصاویر حدود ۲-۳ مگابایت و تقریبا چیزی مابین ۸ تا ۱۰ دقیقه طول کشید .
کد کامل تغییر اندازه تصاویر با php
برای کپی صحیح و کامل کدها ، دابل کلیک کرده تا وارد محیط سفید و کپی شوید در غیر اینصورت امکان دارد اجرای کدها با مشکل روبرو شود
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
<?php // Netparadis.com //Maximize script execution time ini_set('max_execution_time', 0); //Initial settings, Just specify Source and Destination Image folder. $ImagesDirectory = '/home/public_html/websites/images/'; //Source Image Directory End with Slash $DestImagesDirectory = '/home/public_html/websites/images/new/'; //Destination Image Directory End with Slash $NewImageWidth = 500; //New Width of Image $NewImageHeight = 500; // New Height of Image $Quality = 80; //Image Quality //Open Source Image directory, loop through each Image and resize it. if($dir = opendir($ImagesDirectory)){ while(($file = readdir($dir))!== false){ $imagePath = $ImagesDirectory.$file; $destPath = $DestImagesDirectory.$file; $checkValidImage = @getimagesize($imagePath); if(file_exists($imagePath) && $checkValidImage) //Continue only if 2 given parameters are true { //Image looks valid, resize. if(resizeImage($imagePath,$destPath,$NewImageWidth,$NewImageHeight,$Quality)) { echo $file.' resize Success!<br />'; /* Now Image is resized, may be save information in database? */ }else{ echo $file.' resize Failed!<br />'; } } } closedir($dir); } //Function that resizes image. function resizeImage($SrcImage,$DestImage, $MaxWidth,$MaxHeight,$Quality) { list($iWidth,$iHeight,$type) = getimagesize($SrcImage); $ImageScale = min($MaxWidth/$iWidth, $MaxHeight/$iHeight); $NewWidth = ceil($ImageScale*$iWidth); $NewHeight = ceil($ImageScale*$iHeight); $NewCanves = imagecreatetruecolor($NewWidth, $NewHeight); switch(strtolower(image_type_to_mime_type($type))) { case 'image/jpeg': $NewImage = imagecreatefromjpeg($SrcImage); case 'image/png': $NewImage = imagecreatefrompng($SrcImage); case 'image/gif': $NewImage = imagecreatefromgif($SrcImage); break; default: return false; } // Resize Image if(imagecopyresampled($NewCanves, $NewImage,0, 0, 0, 0, $NewWidth, $NewHeight, $iWidth, $iHeight)) { // copy file if(imagejpeg($NewCanves,$DestImage,$Quality)) { imagedestroy($NewCanves); return true; } } } ?> |
می بینید که تغییر اندازه تصاویر با php به چه راحتی می تواند باشد بخصوص اگر قالب سایت را تغییر دادید یا اینکه مواردی این چنین برای سایت یا حتی برای تصاویر شخصی می توانید از این کد php بهره ببرید
موفق باشید
سلام دوست من
من از کد بالا استفاده میکنم اما همیشه اروز resize Failed میده
فرمت همه عکس ها jpg هست و حجمشون بین ۲ تا ۶ مگابایت
من یک کد میخوام که هر کاربر بعد از اینکه عکس رو آپلود کرد این کد اجرا بشه و سایز عکس کم بشه
هزینه هم می پردازم
این کد بالای شما خیلی به درد من میخوره اما ارور resize Failed میده لزفا اگه میشه بررسی کنید ببینید مشکل از کجاست
سلام.
احتمالا آدرس فایل ها بدرستی در کد قرار ندادید.
برای انجام این مورد با هزینه هم میتونید به واتساپ ۰۹۲۱۰۸۱۶۸۴۳ پیام بدید