یکشنبه ۱۸ آذر ۱۴۰۳ |  عضویت / ورود

نوشتن بر روی عکس با GD در PHP


Thursday, 2008 October 30   نویسنده: Hamid   تعداد بازدید: 13411 بار  #آموزش PHP‏   امتیاز متوسط: 4.7

نوشتن بر روی عکس با 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


.



ارسال سؤال یا نظر


1- محمد:
بوسیله: , در: Thursday, 2009 March 12-کد: 795
سلام .
یه کنفرانس ئر مورد کار گرافیکی و عکس در php دارم
که باید تحویل بدم .
هیچی از php نمیدونم .
اگه میشه یه مقاله اموزشی و دارین بهم برسونید
fanavari_m@yahoo.com


2- Gytyonline:
بوسیله: Gytyonline, در: Monday, 2010 August 09-کد: 1968
سلام
خیلی عالی بودش قبلا یکی از دوستام این کار رو با asp انجام داده بودش و من به فکر این بودم که چه طور میشه با Php هم این کار رو انجام دادش .


3- موسی:
بوسیله: , در: Tuesday, 2015 July 14-کد: 13585
با سلام و خسته نباشید.من یک مشکل دارم که امیدوارم کمکم کنید حلش کنم.
یک سایت دارم که درون آن یک تصویر گذاشتم و آدرس آنرا در اختیارکاربران گذاشته ام و میخواهم هرکاربر به آن آدرس مراجعه کرد ساعت و تاریخ و آی پی را در دیتابیس ذخیره کنم.البته تصویر هر روز عوض میشود و آدرس جدید برای کاربران ارسال میشود.ممنون
مثال:
http:www.mysite.comsunday_image_20150512.png


4- موسی:
بوسیله: , در: Thursday, 2015 July 16-کد: 13599
با سلام و خسته نباشید.من یک مشکل دارم که امیدوارم کمکم کنید حلش کنم.
یک سایت دارم که درون آن یک تصویر گذاشتم و آدرس آنرا در اختیارکاربران گذاشته ام و میخواهم هرکاربر به آن آدرس مراجعه کرد ساعت و تاریخ و آی پی را در دیتابیس ذخیره کنم.البته تصویر هر روز عوض میشود و آدرس جدید برای کاربران ارسال میشود.ممنون
مثال:
http:www.mysite.comsunday_image_20150512.png



5- هنر:
بوسیله: , در: Friday, 2015 October 09-کد: 13889
سلام کدهای من به این صورت هستن
$imgfilename="upload/".$imgfilename; // آدرس عکس
$imgselftext=iconv("gbk","utf-8",$imgselftext); //متن روی عکس
$fontfilename="images/ariblk.ttf"; // فونت استفاده شده
$fontsize=10; // سایز فونت
هیچ مشکلی باهاش ندارم تنها مشکل من در متن فارسی
وقتی متن انگلیسی وارد میکنم با فونت مناسب نشون داده میشه ولی وقتی فونت فارسی قرار میدم بازم متن فارسی روی عکس نشون داده نمیشه
البته در حقیقت نشون داده میشه ولی به صورت مربع مربع ( مربع نه علامت سوال )
مشکل چیه؟
من به این خط مشکوکم
$imgselftext=iconv("gbk","utf-8",$imgselftext


6- امیر:
بوسیله: , در: Tuesday, 2019 July 23-کد: 16065
چه جوری بهش فونت فارسی اضافه کنیم


7- مرتضی:
بوسیله: , در: Thursday, 2020 August 20-کد: 16396
اون 7.5 توی حالت دوم از کجا اومده؟؟

Tutorials ©