با GDImage تو PHP میتونی روی تصاویر تغییراتی که میخوای رو اعمال کنی. برای تغییر سایز تصویر از کد زیر استفاده میکنیم:
$imageInfo = getimagesize($filename); // $filename : آدرس تصویر | خروجی تابع یه آرایه هست که سایز تصویر(طول و عرض) توش وجود داره
$original_w = $imageInfo[0]; // اینجا عرض یا همون Width تصویر رو بدست میاریم
$original_h = $imageInfo[2];
$original_img = imagecreatefromjpeg($filename); // اینجا با تابع imagecreatefromjpeg یه تصویر جدید از تصویر قدیمی میسازیم. نکته: اگه تصویر WEBP، PNG یا فرمت دیگه ای داشته باشه باید از تابع مخصوص خودشون استفاده کنی. مثلا بری پیانجی imagecreatefrompng هست
$thumb_w = 100; // Width جدید
$thumb_h = 100; // Height جدید
$thumb_img = imagecreatetruecolor($thumb_w, $thumb_h); // اینجا یه تصویر خالی با width و height جدید(همون thumb_h و thumb_w) میسازیم
imagecopyresampled($thumb_img, $original_img, // اینجا اطلاعات تصویر اصلی رو قرار میدیم تو تصویر جدید
0, 0,
0, 0,
$thumb_w, $thumb_h,
$original_w, $original_h);
imagejpeg($thumb_img, $adress); // اینجا هم تصویر رو ذخیره میکنیم. $adress : آدرس کامل جایی که باید ذخیره بشه؛ نکته: باید تو آدرس اسم تصویر و فرمت تصویر هم باشه مثلا Folder\Image.jpg .
منبع
نکته: تو خط آخر imagejpeg یه ورودی سوم هم میگیره که اجباری نیست. کیفیت تصویر هست که تو WEBP و JPEG یه عدد بین 1 تا 99 و تو PNG یه عدد بین 1 تا 9 هست.
همونطور که گفتم هر فرمت تابع های خودش رو داره اما زیاد تفاوتی با هم ندارن اما باید برای هر فرمت تابع خودش رو استفاده کنی. مثلا برای WEBP باید از imagecreatefromwebp و imagewebp استفاده کنی
آموزش/مستندات تابع ها:
imagejpeg
imagecreatefromjpeg
getimagesize
از API های اینکار هم میتونی استفاده کنی.
پیشنهادم استفاده از پکیج فوق العاده image intervention هست. اگر به مستنداتش مراجعه کنید امکانات خیلی زیادی رو در اختیارتون قرار میده از جمله resize:
https://image.intervention.io/v2/api/resize
سلام خسته نباشید
این پکیج خیلی خوبه برای عکس ها و کلی کار میتونی انجام بدی
https://image.intervention.io/v2
اینم برای اموزش
https://www.itsolutionstuff.com/post/laravel-8-resize-image-before-upload-exampleexample.html
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟