Pedram77
یک شنبه 09 فروردین 1394, 19:16 عصر
تو این تاپیک قصد دارم برنامه نویسی گرافیکی توی PHP رو یاد بدم و اطلاعات کم خودمو با شما ها در میون بذارم.
تصاویر، زبان های بسیار گوناگونی دارند و اطلاعاتی را در اختیار دیگران قرار میدهند و زیبایی خاصی به وبسایت می بخشند. در PHP توابع زیادی برای رسم و دستکاری گرافیکی دارد. این توابع در کتابخانه ای به نام GD قرار دارند. برای استفاده از این کتابخانه مراحل زیر را انجام دهید:
فایل PHP.ini را باز کنید. (xampp,wamp,easyPHP,...).
دستور extension = php_gd2.dll را در آن پیدا کنید
اگر قبل از آن علامت " ; " قرار داشت آن علامت را بردارید.
فایل را ذخیره کنید و سیستم را ریست کنید (فقط همان نرم افزار)
کتابخانه قابل استفاده است.
PHP چه فرمت هایی را پشتیبانی میکند؟
کتابخانه GD فرمت های زیر را پشتیبانی میکند.
Jpeg
PNG
WBMP
GIF
ایجاد تصاویر
اکنون میخواهیم به چگونگی ساخت تصاویر بپردازیم. مراحل ایجاد تصاویر به این صورت است :
ایجاد بوم نقاشی برای کار کردن روی آن
رسم اشکال یا چاپ متن روی آن
چاپ گرافیک در مرورگر
پاک کردن حافظه با حذف بوم
حال به جزئیات میپردازیم:
ایجاد بوم نقاشیبرای ساخت تصاویر در PHP باید یک شناسه تصویر ایجاد شود. دو روش برای انجام این کار وجود دارد: 1- ساخت بوم نقاشی جدید 2- استفاده از یک تصویر موجود به عنوان بوم
در روش اول از تابع ImageCreate() استفاده میشود :
$im = ImageCreate($width,$height);
پارامتر width عرض بوم و پارامتر height ارتفاع بوم را مشخص میکند (هر دو پیکسل). این تابع شناسه ی بوم را در متغیر $im قرار میدهد.
در روش دوم از توابع زیر استفاده میشود :
ImageCreateFromJPEG()
ImageCreateFromGIF()
ImageCreateFromPNG()
مثلا کد زیر یک تصویر JPEG را به عنوان بوم قرار میدهد :
$im = ImageCreateFromJPEG("board.jpg");
سیستم مختصات تصویر
همیشه در تصاویر PHP (و اکثر زبان ها) مبدا تصویر یعنی نقطه ی (0,0) در گوشه بالا سمت راست قرار دارد.
ترسیم یا نوشتن متن روی بوم
پس از ایجاد بوم باید رنگی را برای ترسیم انتخاب شود. انتخاب رنگ توسط تابع ImageColorAllocate() انجام میشود که به صورت زیر است:
$pen = ImageColorAllocate(canvas,red,green,blue);
پارامتر canvas همان شناسه ی بوم است ($im) سه پارامتر بعدی هم سیستم رنگی rgb است که هر کدام از 0 تا 255 میتواند مقدار دهی شوند. کد زیر یک قلموی قرمز تولید میکند که میتواند در پروژه استفاده شود:
$red = ImageColorAllocate($im,255,0,0);
به طور کلی برای رسم هر گونه متن، مربع، دایره، چند ضلعی و... به پارامتر های زیر نیاز است :
شناسه بوم
مختصات شروع و بعضی اوقات پایان شکل
رنگ ترسیم
برای متن اطلاعات فونت
رسم خط (Line)
برای رسم خط از تابع ImageLine() استفاده میشود که به صورت زیر است:
ImageLine($im,x1,y1,x2,y2,color);
پارامتر اول شناسه بوم است. چهار پارامتر بعدی نقطه ی شروع و پایان است و color همان رنگ است که در قسمت بالا گفته شد.($red)
یک نمونه از رسم خط :
$im = ImageCreate(200,150);
$blue = ImageColorAllocate($im,0,0,255);
ImageLine($im,10,10,150,30,$blue);
رسم دایره (Circle)
برای رسم خط از تابع ImageArc() استفاده میشود که به صورت زیر است:
ImageArc(image,x,y,w,h,start,end,color);
پارامتر اول شناسه بوم است.x و y مختصات مرکز دایره هستند. w و h عرض و ارتفاع دایره هستند که اگر مساوی باشند ما یک دایره خواهیم داشت در غیر این صورت یک بیضی خواهیم داشت.start نقطه ی شروع کمان است و end نقطه پایان کمان (هر دو به درجه) مثال :
ImageArc($im,150,65,70,70,0,360,$blue);
ترسیم چهار گوش (Rectangle)
برای رسم چهار گوش از تابع ImageRectangle() استفاده میشود :
ImageRectangle(image,x1,y1,x2,y2,color);
پارامتر ها روشن هستند و نیاز به توضیح ندارند.
چاپ گرافیک در مرورگر
برای نمایش تصویر نهایی در مرورگر دو راه وجود دارد 1- نمایش مستقیم 2- ذخیره در فایل.
برای نمایش تصویر باید آن را به مرورگر اعلام کرد. این کار با تابع header انجام میشود:
header("content_type : image/jpeg")
header("content_type : image/png")
header("content_type : image/gif")
بعد از اعلام به مرورگر آمادگی فرستادن تصویر به مرورگر را داریم. برای این کار از توابع زیر استفاده میشود:
ImagePng(image)
ImageJpeg(image)
ImageGif(image)
بسته به نوع مورد نظرتان یکی را بنویسید.
روش دوم ذخیره در یک فایل است (روش پیشنهادی من چون من از روش قبل تو مرورگرم جواب نمیگیرم شما امتحان کنید شاید بشه) برای این منظور از توابع قبل (مثل ImageJpeg) استفاده میشود فقط با چند پارامتر بیشتر.
ImageJpeg($im,"image.jpg",100);
پارامتر سوم میتواند از 1 تا 100 باشد که به معنای کیفیت فایل است.
حذف تصویر
بعد از اتمام کار تصویر باید حذف شود (اختیاری):
ImageDestroy($im);
برای شما دو مثال که خودم نوشتم قرار میدم. اینو بگم که توی فایلها یسری نکات رو استفاده کردم که اینجا نگفتم ولی کاملا واضحه.
امیدوارم تونسته باشم چیزایی که میدونستمو خوب انتقال بدم :لبخند:
تصاویر، زبان های بسیار گوناگونی دارند و اطلاعاتی را در اختیار دیگران قرار میدهند و زیبایی خاصی به وبسایت می بخشند. در PHP توابع زیادی برای رسم و دستکاری گرافیکی دارد. این توابع در کتابخانه ای به نام GD قرار دارند. برای استفاده از این کتابخانه مراحل زیر را انجام دهید:
فایل PHP.ini را باز کنید. (xampp,wamp,easyPHP,...).
دستور extension = php_gd2.dll را در آن پیدا کنید
اگر قبل از آن علامت " ; " قرار داشت آن علامت را بردارید.
فایل را ذخیره کنید و سیستم را ریست کنید (فقط همان نرم افزار)
کتابخانه قابل استفاده است.
PHP چه فرمت هایی را پشتیبانی میکند؟
کتابخانه GD فرمت های زیر را پشتیبانی میکند.
Jpeg
PNG
WBMP
GIF
ایجاد تصاویر
اکنون میخواهیم به چگونگی ساخت تصاویر بپردازیم. مراحل ایجاد تصاویر به این صورت است :
ایجاد بوم نقاشی برای کار کردن روی آن
رسم اشکال یا چاپ متن روی آن
چاپ گرافیک در مرورگر
پاک کردن حافظه با حذف بوم
حال به جزئیات میپردازیم:
ایجاد بوم نقاشیبرای ساخت تصاویر در PHP باید یک شناسه تصویر ایجاد شود. دو روش برای انجام این کار وجود دارد: 1- ساخت بوم نقاشی جدید 2- استفاده از یک تصویر موجود به عنوان بوم
در روش اول از تابع ImageCreate() استفاده میشود :
$im = ImageCreate($width,$height);
پارامتر width عرض بوم و پارامتر height ارتفاع بوم را مشخص میکند (هر دو پیکسل). این تابع شناسه ی بوم را در متغیر $im قرار میدهد.
در روش دوم از توابع زیر استفاده میشود :
ImageCreateFromJPEG()
ImageCreateFromGIF()
ImageCreateFromPNG()
مثلا کد زیر یک تصویر JPEG را به عنوان بوم قرار میدهد :
$im = ImageCreateFromJPEG("board.jpg");
سیستم مختصات تصویر
همیشه در تصاویر PHP (و اکثر زبان ها) مبدا تصویر یعنی نقطه ی (0,0) در گوشه بالا سمت راست قرار دارد.
ترسیم یا نوشتن متن روی بوم
پس از ایجاد بوم باید رنگی را برای ترسیم انتخاب شود. انتخاب رنگ توسط تابع ImageColorAllocate() انجام میشود که به صورت زیر است:
$pen = ImageColorAllocate(canvas,red,green,blue);
پارامتر canvas همان شناسه ی بوم است ($im) سه پارامتر بعدی هم سیستم رنگی rgb است که هر کدام از 0 تا 255 میتواند مقدار دهی شوند. کد زیر یک قلموی قرمز تولید میکند که میتواند در پروژه استفاده شود:
$red = ImageColorAllocate($im,255,0,0);
به طور کلی برای رسم هر گونه متن، مربع، دایره، چند ضلعی و... به پارامتر های زیر نیاز است :
شناسه بوم
مختصات شروع و بعضی اوقات پایان شکل
رنگ ترسیم
برای متن اطلاعات فونت
رسم خط (Line)
برای رسم خط از تابع ImageLine() استفاده میشود که به صورت زیر است:
ImageLine($im,x1,y1,x2,y2,color);
پارامتر اول شناسه بوم است. چهار پارامتر بعدی نقطه ی شروع و پایان است و color همان رنگ است که در قسمت بالا گفته شد.($red)
یک نمونه از رسم خط :
$im = ImageCreate(200,150);
$blue = ImageColorAllocate($im,0,0,255);
ImageLine($im,10,10,150,30,$blue);
رسم دایره (Circle)
برای رسم خط از تابع ImageArc() استفاده میشود که به صورت زیر است:
ImageArc(image,x,y,w,h,start,end,color);
پارامتر اول شناسه بوم است.x و y مختصات مرکز دایره هستند. w و h عرض و ارتفاع دایره هستند که اگر مساوی باشند ما یک دایره خواهیم داشت در غیر این صورت یک بیضی خواهیم داشت.start نقطه ی شروع کمان است و end نقطه پایان کمان (هر دو به درجه) مثال :
ImageArc($im,150,65,70,70,0,360,$blue);
ترسیم چهار گوش (Rectangle)
برای رسم چهار گوش از تابع ImageRectangle() استفاده میشود :
ImageRectangle(image,x1,y1,x2,y2,color);
پارامتر ها روشن هستند و نیاز به توضیح ندارند.
چاپ گرافیک در مرورگر
برای نمایش تصویر نهایی در مرورگر دو راه وجود دارد 1- نمایش مستقیم 2- ذخیره در فایل.
برای نمایش تصویر باید آن را به مرورگر اعلام کرد. این کار با تابع header انجام میشود:
header("content_type : image/jpeg")
header("content_type : image/png")
header("content_type : image/gif")
بعد از اعلام به مرورگر آمادگی فرستادن تصویر به مرورگر را داریم. برای این کار از توابع زیر استفاده میشود:
ImagePng(image)
ImageJpeg(image)
ImageGif(image)
بسته به نوع مورد نظرتان یکی را بنویسید.
روش دوم ذخیره در یک فایل است (روش پیشنهادی من چون من از روش قبل تو مرورگرم جواب نمیگیرم شما امتحان کنید شاید بشه) برای این منظور از توابع قبل (مثل ImageJpeg) استفاده میشود فقط با چند پارامتر بیشتر.
ImageJpeg($im,"image.jpg",100);
پارامتر سوم میتواند از 1 تا 100 باشد که به معنای کیفیت فایل است.
حذف تصویر
بعد از اتمام کار تصویر باید حذف شود (اختیاری):
ImageDestroy($im);
برای شما دو مثال که خودم نوشتم قرار میدم. اینو بگم که توی فایلها یسری نکات رو استفاده کردم که اینجا نگفتم ولی کاملا واضحه.
امیدوارم تونسته باشم چیزایی که میدونستمو خوب انتقال بدم :لبخند: