گرد کردن تصویر با PHP

سلام

پیش اومده برام که لازم باشه تصویری از کاربر بگیرم و اون تصویر رو بصورت دایره شکل تبدیل کنم

مثل همین تصاویر پروفایل تلگرام میبینید.

گرد کردن تصاویر با css هم امکانش هست اما به وقتایی اصلا کارتون شاید توی محیط وب نباشه و ملزم به گرد کردن تصویر هستید

کلا PHP توابع خیلی قوی داره برای کار با تصاویر . این مورد رو باید به یاد داشته باشید که کتابخانه GD باید روی سرور نصب باشه.

برای آموزش نصب GD روی سرورهای Debian Base اینجا رو کلیک کنید

برای آموزش نصب GD روی سرور های  RedHat Base اینجا رو کلیک کنید.

یه مورد رو هم برای اطلاع بگم : یک پکیج به نام ImageMagick هست که کارهای بشدت زیادی رو میشه یاهاش انجام داد. البته این پکیج روی سرور های اشتراکی نصب نیست اصولا. ولی اگر سرور برای خودتون هست پیشنهاد میکنم از این پکیج استفاده کنید کارهاتون خیلی راحت میشه.

 

خوب یک فانکشن خیلی ساده و جمع و جور آماده کردم که با هم بررسیش میکنیم.

function circle($image,$nw,$nh)
{
    $filename = $image;
    $image_s = imagecreatefromstring(file_get_contents($filename));
    $width = imagesx($image_s);
    $height = imagesy($image_s);
    $newwidth = $nw;
    $newheight = $nh;
    $image = imagecreatetruecolor($newwidth, $newheight);
    imagealphablending($image, true);
    imagecopyresampled($image, $image_s, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
    $mask = imagecreatetruecolor($newwidth, $newheight);
    $transparent = imagecolorallocate($mask, 255, 0, 0);
    imagecolortransparent($mask,$transparent);
    imagefilledellipse($mask, $newwidth/2, $newheight/2, $newwidth, $newheight, $transparent);
    $red = imagecolorallocate($mask, 0, 0, 0);
    imagecopymerge($image, $mask, 0, 0, 0, 0, $newwidth, $newheight, 100);
    imagecolortransparent($image,$red);
    imagefill($image, 0, 0, $red);
    imagepng($image,"upload/".time().".png");
    imagedestroy($image);
    imagedestroy($mask);
}
circle('sample.jpg',150,150);

این تابع ۳ ورودی از شما دریافت میکند . اولی آدرس و اسم تصویر دومی اندازه عرض تصویر تهایی و سومی ارتفاع تصویر نهایی
که طبیعتا باید مورد ۲ و ۳ مساوی باشند و درنهایت تصویر گرد شده رو با فرمت png در فولدر upload با اسم جدید قرار میده.

در اولین قدم شما با استفاده از تابع file_get_contents تصویر ورودی رو تبدیل به sting میکنید که این sting باید به عنوان ورودی تابع imagecreatefromstring

استفاده شود. سپس عوض و ارتفاع تصویر رو با استفاده از ۲ تابع imagesx و imagesy بدست میاریم.

حالا با استفاده از تابع imagecreatetruecolor به PHP میگیم که قصد داریم یک تصویر رنگی ایجاد کنیم ورودی این تابع عرض و ارتفاع تصویرمون هست.

 

 

اگر نیاز دارید که فرمت تصویر jpg باشد باید imagepng رو یه imagejpeg تبدیل کنید. اینجوری حجم تصویر هم کم میشه . اما png از قابلیت transparent پشتیبانی میکنه و jpeg این قابلیت رو نداره.

 

میتونید کد گرد کردن تصویر با PHP رو در قالب یک فایل به همراه فولدر های مورد نیازش از اینجا دانلود کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *