نوشتن بر روی عکس با GD در PHP (کار با گرافیک در PHP)

گاهی اوقات نیاز می‌شود که شما با متنی را به صورت عکس در صفحه وب خود به نمایش بگذارید.

به طور مثال، به جای استفاده از ده دکمه که استایلی مشابه دارند، می‌توانید یک دکمه بدون متن ایجاد کنید و متن روی آن را در ده جای مختلف با استفاده از امکان GD در PHP درج کنید.

اولین قدم این است که ببینیم gd سرور ما فعال است یا نه.
اگر فعال نبود با مدیر سرور اگر ممکن است تماس بگیرید.
 

و اگر لوکال کار می کنید باید خودتان اگر فعال نیست فعال کنید. در easyphp در پوشه apache فایل php.ini تغییر زیر را انجام دهید:
;extension=php_gd2.dll => extension=php_gd2.dll

یعنی سمی کالن که کامنت ساز است را از اول خط بردارید. بعد ریست کنید easyphp را.
در wamp می گویند خودش فعال است. من امتحان نکردم.
 

برای اینکه بفهمید آیا فعال است یا نه از تابع phpinfo استفاده کنید. به این شکل:
<?
phpinfo();
?>

اگر فعال باشد داریم:
 

 

بعد از اینکه مطمئن شدید GD فعال است، دو حالت پیش می‌آید:

1- می‌خواهید عکسی ایجاد کنید و بر روی آن متنی را بنویسید.
2- می‌خواهید عکسی را باز کنید و بر روی آن بنویسید.

حالت اول:

مثال از مانوال php :
 
<?php
header ("Content-type: image/png");
$im = @imagecreatetruecolor(150, 30) or die("Cannot Initialize new GD image stream");
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, "A Simple Text String", $text_color);
imagepng($im);
imagedestroy($im);
?>
نتیجه کار، یک کادر مشکلی رنگ با ابعاد 150 در 30 خواهد شد که نوشته‌ای با رنگ قرمز روی آن نوشته شده است:

شرح:
خط اول که header است.
خط دوم اندازه عکس با x و y آن...
 
خط سوم تعیین رنگ :عدد اولی میزان قرمز است که از صفر تا 255 جا دارد و بعدی سبز و بعدی آبی.

 

خط چهارم بعد $im که در بالا ساخته شده . فواصل حروف و بعد x و y محل قرارگیری رشته و بعد خود رشته و بعد رنگ نوشته.
خطهای پنجم و ششم انجام عملیات و تخریب شی.

 

حالت دوم:

مثال از مانوال php با کمی تغییر:
 
<?php

header("Content-type: image/png");
$string ="Hello world!";
$im = imagecreatefrompng("button.png");
$red = imagecolorallocate($im, 255, 0, 0);
$px = (imagesx($im) - 7.5 * strlen($string)) / 2;
imagestring($im, 3, $px, 5, $string, $red);
imagepng($im);
imagedestroy($im);

?>
کد بالا عکسی با نام button.png را که به شکل زیر است:



باز می‌کند و چنین حالتی را نتیجه خواهد داد:


شرح کد :
خط اول که header است و کارش همین است که اعلام کرده.
خط دوم که رشته نوشتنی را Hello world! اعلام کرده.
خط سوم آدرس عکس و نامش را داده.(در اینجا فقط نام عکس است)
خط چهارم رنگ قرمز را با اعداد 255 و صفر و صفر ساخته ایم. عدد اولی میزان قرمز است که از صفر تا 255 جا دارد و بعدی سبز و بعدی آبی.
خط پنجم محاسبه x نوشته ما. کمی دقت کنید می فهمید چه فلسفه ای دارد این محاسبه.
خط ششم یک سری مقدار ارسال شده که اولی فواصل حروف و دومی x و سومی y نوشته و بعد خود نوشته و رنگی که باید نوشته شود که قرمز است.
دو خط هفتم و هشتم هم انجام نهایی پروسه و تخریب شی.

موفق باشید؛

منبع مقاله (با کمی تغییر) : parsiforums.com