استفاده از توابع تصاویر از کتابخانه GD داخل هسته php , آسان ترین راه برای ساخت تصویر با php به همراه متن و بصورت داینامیک است.
در بعضی مواقع شما نیاز دارید که یک تصویری را در مموری و بدون ذخیره سازی(on the fly) ایجاد و متن دلخواه را داخل آن قرار بدید.بنابراین می توانید یک تصویر تصادفی و داینامیک را با php ایجاد کنید.
حتما توجه کنید قبل از شروع, از نصب و فعال بودن کتابخانه GD اطمیمنان حاصل کنید (البته در اکثر سرور ها فعال است و با تابع phpinfo() می توانید بررسی کنید.)
در این آموزش PHP , قصد داریم به شما نحوه ساخت تصویر با php بصورت داینامیک را نشان بدیم.
کد مثال ما یک تصویر داینامیک را با PHP براساس تنظیمات مشخص شده, ایجاد می کند. شما می توانید عرض, ارتفاع, رنگ پس زمینه و رنگ متن و خود متن را تغییر بدید.
ساخت تصویر با php بصورت داینامیک
کد زیر نحوه ساخت تصویر با php بصورت داینامیک را به شما نمایش می دهد.
توابع GD که در این آموزش استفاده اند بصورت زیر هستند.
imagecreate()
– ساخت یک ریسورس تصویر خالی با سایزهای مشخص شده (width, height)imagecolorallocate()
– اختصاص دادن یک رنگ برای ریسورس عکسimagettfbbox()
– محاسبه پیکسلی محدوده باک برای نوشتن متنimagettftext()
– نوشتن (write) متن در تصویر با فونت با فرمت TrueType (ttf)imagepng()
– ساخت تصویر PNGimagedestroy()
– حذف ریسورس تصویر از حافظه سرور- ریسورس (resource) : آی دی پروسه ساخته تصویر در حافظه (memory) سیستم
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 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
// Specify font path $font = 'fonts/verdana.ttf'; // Text font size $font_size = 10; // Get settings from URL $setting = isset($_GET['s']) ? $_GET['s'] : "000_FFF_350_350"; $setting = explode("_", $setting); $img = array(); // Define image width, height, and color switch($n = count($setting)){ case $n > 4 : case 3: $setting[3] = $setting[2]; case 4: $img['width'] = (int) $setting[2]; $img['height'] = (int) $setting[3]; case 2: $img['background'] = $setting[0]; $img['color'] = $setting[1]; break; default: list($img['background'], $img['color'], $img['width'], $img['height']) = array('F', '0', 100, 100); break; } $background = explode(",",hex2rgb($img['background'])); $textColorRgb = explode(",",hex2rgb($img['color'])); $width = empty($img['width']) ? 100 : $img['width']; $height = empty($img['height']) ? 100 : $img['height']; // Get text from URL $text = (string) isset($_GET['t']) ? urldecode($_GET['t']) : $width ." x ". $height; // Create the image resource $image = @imagecreate($width, $height) or die("Cannot Initialize new GD image stream"); // Create image background $background_color = imagecolorallocate($image, $background[0], $background[1], $background[2]); // Grab the width & height of the text box $bounding_box_size = imagettfbbox($font_size, 0, $font, $text); $text_width = $bounding_box_size[2] - $bounding_box_size[0]; $text_height = $bounding_box_size[7]-$bounding_box_size[1]; // Text x&y coordinates $x = ceil(($width - $text_width) / 2); $y = ceil(($height - $text_height) / 2); // Define text color $text_color = imagecolorallocate($image, $textColorRgb[0], $textColorRgb[1], $textColorRgb[2]); // Write text to image imagettftext($image, $font_size, 0, $x, $y, $text_color, $font, $text); // Set the content type header - in this case image/png header('Content-Type: image/png'); // Output the image imagepng($image); // Free up memory imagedestroy($image); // Convert color code to rgb function hex2rgb($hex) { $hex = str_replace("#", "", $hex); switch(strlen($hex)){ case 1: $hex = $hex.$hex; case 2: $r = hexdec($hex); $g = hexdec($hex); $b = hexdec($hex); break; case 3: $r = hexdec(substr($hex,0,1).substr($hex,0,1)); $g = hexdec(substr($hex,1,1).substr($hex,1,1)); $b = hexdec(substr($hex,2,1).substr($hex,2,1)); break; default: $r = hexdec(substr($hex,0,2)); $g = hexdec(substr($hex,2,2)); $b = hexdec(substr($hex,4,2)); break; } $rgb = array($r, $g, $b); return implode(",", $rgb); } |
برای کپی صحیح و کامل کدها ، دابل کلیک کرده تا وارد محیط سفید و کپی شوید در غیر اینصورت امکان دارد اجرای کدها با مشکل روبرو شود
تنظیمات گزینه ها :
s–
مشخص کردن رنگ پس زمینه و پیش زمینه تصویر, عرض و ارتفاع در query string .
مقادیر این گزینه باید با خط زیر (_) مشخص شوند . بطور مثال : ۰۰۰_FFF_300_300
t –
مشخص کردن هر متن دلخواه که قصد دارید روی تصویر قرار بگیرد.
نحوه استفاده از اسکرپت ساخت تصویر با php بصورت داینامیک
آدرس اسکریپت PHP را برای ساخت تصویر داینامیک به همراه تنظیمات مورد نیاز در مقدار src تگ img مشخص کنید.
1 |
<img src="create_image.php?s=000_FFF_350_350&t=Dynamic Image" > |
در صورتی که قصد دارید متن فارسی را به تصویر اضافه کنید, آموزش تبدیل متن به عکس دنبال کنید.
جمع بندی
قابلیت ساخت تصویر با php بصورت داینامیک در زمانی که قصد ایجاد تصاویر on the fly دارید بسیار کاربردی است.
اگر قصد دارید یک یک تصویر بدون پیش زمینه ایجاد کنید (transparent), پس مشخصه رنگ بکگراند را به کار نبرید. به هر حال شما بنابر نیاز خود می توانید اسکرپت را توسعه بدید و به عنوان یک تابع در پروژه های مختلف استفاده کنید.
از این آدرس می توانید برای استفاده در اپلیکشن ها و دیگر بخش های پروژه خود به عنوان یک API کوچک برای ساخت تصاویر مانند ایجاد کپچا و غیره بهره ببرید.
امیدوارم از آموزش ساخت تصویر با php بصورت داینامیک نهایت استفاده را برده باشید.
برای دانلود سورس کد کامل از باکس دانلود زیر استفاده کنید.
هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق و پیروز باشید.
سلام خسته نباشید . آیا ایجاد تصاویر با این روش به صورت تعداد بالا موجب فشار بر روی هاست میشود ؟
سلام ممنون.
بله میتونه روی سرور فشار بیاره که باید کانفیگ بالا تهیه کنید