pedia-learning

ورود

گذرواژه‌تان را فراموش کرده‌اید؟

ثبت نام

ثبت نام
انجمن عمومی گسترش فناوری آگو

اگر اولین بار از انجمن بازدید می کنید برای دسترسی کامل به انجمن عضو شوید بعد عضویت قادر به ارسال مطلب و شرکت در بحث خواهید داشت

ارسال پاسخ 
 
امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
آموزش توابع GD (قسمت اول)
02-03-2014, 03:23 PM
ارسال: #1
آموزش توابع GD (قسمت اول)
GD یه کتابخونه از PHP هست که به ما در ساخت و حتی ویرایش و اعمال تغییرات روی تصاویر JPG,PNG,GIF کمک میکنه.تو اولین پستم تصمیم گرفتم توابع حرفه ای این کتابخونه رو بهتون معرفی کنم و طرز استفاده از اونا رو توضیح بدم.

در اولین قدم برای ساخت یه تصویر به کمک GD باید از تابع زیر استفاده کنیم که دو تا آرگومان (۱-عرض) و (۲-طول) تصویر رو دریافت میکنه:

کد php:
<?php
$image 
imagecreate(100,60);
?>

و اگر بخوایم روی یه تصویر دیگه تغییری ایجاد کنیم میتونیم از توابع زیر استفاده کنیم که یک آرگومان (۱-مسیر فایل) رو دریافت می کنند:

کد php:
<?php
$image_1 
imagecreatefromjpeg('../first.jpg');
$image_2 imagecreatefrompng('../first.png');
$image_3 imagecreatefromgif('../first.gif');
?>
برای پر کردن پس زمینه یه تصویر از تابع زیر استفاده میشه که چهار آرگومان (۱-تصویر منبع که به کمک یکی از توابع ساخت یا بارگذاری تصویر ایجاد شده)(۲-ترکیب قرمز)(۳-ترکیب سبز)(۴-ترکیب آبی) رو دریافت میکنه:

کد php:
<?php
$background 
imagecolorallocate($image,255,255,255);
?>
البته تابع بالا فقط در اولین فراخوانی رنگ پس زمینه رو تعیین میکنه و برای دفعات ۲ و ۳ و … برای انتخاب و برداشتن رنگ ازش استفاده میشه.

حالا برای مثال میخوایم یه تصویر با پس زمینه سفید ایجاد کنیم که داخل اون با رنگ سیاه “http://phpro.ir” نوشته شده باشه.

از اونجایی که خروجی که در پایان کار میخوایم از مرورگر بگیریم از نوع تصویر هست باید با کمک تابع header نوع خروجی رو به مرورگر اعلام کنیم و بعد یه تصویر با فرمت دلخواه ایجاد میکنیم:


کد php:
<?php
header
("Content-type: image/png");
$image imagecreate(200,60);
$background imagecolorallocate($image,255,255,255);
$textcolor imagecolorallocate($image,0,0,0);
imagestring($image101010'http://phpro.ir'$textcolor);
imagepng($image);
?>

برای درج یه رشته داخل تصویر از تابع imagestring استفاده میکنیم که ۶ آرگومان (۱-تصویر منبع)(۲-اندازه قلم)(۳و۴-محل قرارگیری بالاترین نقطه سمت چپ رشته که تابع از اونجا شروع به درج رشته میکنه)(۵-خود رشته)(۶-رنگ قلم) رو دریافت میکنه.
و در انتها با استفاده از تابع imagepng یا imagegpej و یا imagegif برای ساخت نهایی تصویر و نمایش دادن آن.
چیزی که از اجرای کد بالا خواهید داشت اینه:

[تصویر:  Untitled-1.png]

و اما،این تصویر رو ببینید:

[تصویر:  gd-lib-tut-2.png]

همونطور که میبینید این تصویر شامل یه مستطیل قرمز و یه بیضی آبی هستش پس برای ساختش یه تابع برای رسم مستطیل و تابع دیگه ای برای رسم دایره نیاز داریم.

برای رسم مستطیل توپر از تابع imagefilledrectangle و برای رسم مستطیل توخالی از تابع imagerectangle استفاده میکنیم که هر دو تابع ۶ آرگومان (۱-تصویر منبع)(۲و۳- بالاترین نقطه سمت چپ مستطیل که تابع از اونجا شروع به رسم مستطیل میکنه)(۴و۵-پایین ترین نقطه سمت راست مستطیل که مستطیل تا اون نقطه کشیده میشه)(۶-رنگ قلم رسم) رو دریافت میکنن.

و برای رسم دایره(یا بیضی) دو تابع imagefilledellipse و imageellipse رو داریم که این دو تابع هم ۶ آرگومان (۱-تصویر منبع)(۲و۳-طول و عرض مرکز دایره)(۴و۵-عرض و ارتفاع دایره)(۶-رنگ قلم رسم) رو دریافت میکنن:

کد php:
<?php
header
("Content-Type: image/gif");
$image imagecreate(200,60);
$background imagecolorallocate($image,255,255,255);
$ellcolor imagecolorallocate($image,0,0,255);
$reccolor imagecolorallocate($image,255,0,0);
imagefilledrectangle($image,10,10,190,50,$reccolor);
imagefilledellipse($image,100,30,180,40,$ellcolor);
imagegif($image);
?>

حالا اینو ببینید:

[تصویر:  gd-lib-tut-3.png]

در واقع این همون تصویر قبلی هست که کمی چرخوندیم و فضاهای خالی که بعد چرخش بوجود اومده رو با رنگ سبز پر کردیم.

برای چرخش تصویر(پادساعتگرد) از تابع imagerotate استفاده میکنیم که ۳ آرگومان (۱-تصویر منبع)(۲-درجه چرخش)(۳-رنگی که فضاهای جدید با اون پر میشه) رو دریافت میکنه.پس برای ساخت تصویر بالا نیاز به یه همچین کدی داریم:

کد php:
<?php
header
("Content-Type: image/png");
$image imagecreate(200,60);
$background imagecolorallocate($image,255,255,255);
$ellcolor imagecolorallocate($image,0,0,255);
$reccolor imagecolorallocate($image,255,0,0);
imagefilledrectangle($image ,  ۱۰ ۱۰ ۱۹۰ ۵۰ ,$reccolor);
imagefilledellipse($image ,  ۱۰۰ ۳۰ ۱۸۰ ۴۰ ,$ellcolor);
$freezone imagecolorallocate($image,0,255,0);
$image imagerotate($image20$freezone);
imagepng($image);
?>

خب فعلا تا همین جا رو داشته باشید تا چند روزه آینده ادامش رو بنویسم.
نقل قول این ارسال در یک پاسخ
ارسال پاسخ 


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان


Persian Translation by MyBBIran.com - Ver: 4.1
Powered by MyBB, © 2002-2024 MyBB Group.
Theme designed by Marvel (Sidebar created by Yaldaram - Yaldaram.com)
Theme Translation by Mt Edition