کار با عکس ها در PHP

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
فهرست مطالب:

  1. نمایش عکس ها با PHP
  2. استفاده از تابع imagecreatetruecolor به جای تابع imagecreate ، برای ساختن عکس جدید، بدون خراب شدن رنگ ها، در PHP
  3. افزودن یک طرح (watermark - stamp) شامل متن و کادر مستطیلی و به صورت نیمه شفاف، بر روی یک عکس موجود، در PHP
  4. به دست آوردن اندازه عرض (width) و ارتفاع (height) یک عکس، بر حسب پیکسل (px - pixel)، با توابع imagesx و imagesy در PHP
  5. افزودن یک عکس بر روی یک عکس دیگر (watermark - stamp)، در PHP
  6. چسباندن دو عکس به یکدیگر، در جهت عمودی، در PHP
  7. تبدیل متن به عکس، در PHP



منبع : کلیدستان
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
نمایش عکس ها با PHP

نمایش عکس ها با PHP

همان طور که می دانید، در HTML ، از تگ img برای نمایش عکس ها استفاده می شود، اما امکان دارد که بخواهیم با استفاده از کدهای PHP ، یک عکس را به کاربر نمایش بدهیم. در واقع، کدهای PHP می توانند برای پردازش بر روی عکس و سپس نمایش نتیجه پردازش به کار بروند، ولی فعلا در این مبحث، قصد داریم که تنها چگونگی نمایش یک عکس توسط کدهای PHP را آموزش بدهیم.

برای درک چگونگی نمایش یک عکس توسط PHP ، به مثال زیر توجه کنید :

[h=4]مثال :[/h]فرض کنید عکسی با نام image_name.jpg داریم و قصد داریم که توسط PHP ، این عکس را خوانده و در متغیر با نام image ذخیره نماییم و سپس آن را نمایش بدهیم. برای این منظور، کدهای زیر را می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]<?php[/B]
[COLOR=#000088]$image_path[/COLOR][COLOR=#339933]=[/COLOR][COLOR=#0000FF]'image_name.jpg'[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000088]$image[/COLOR][COLOR=#339933]=[/COLOR][COLOR=#990000]imagecreatefromjpeg[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$image_path[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]header[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]'Content-Type: image/jpeg'[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagejpeg[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$image[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[B]?>[/B][/FONT]
[/FONT][/COLOR]
[h=4]نتیجه :Untitled.jpg[/h]
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
استفاده از تابع imagecreatetruecolor به جای تابع imagecreate ، برای ساختن عکس جدید، بدون خراب شدن رنگ ها، در PHP

استفاده از تابع imagecreatetruecolor به جای تابع imagecreate ، برای ساختن عکس جدید، بدون خراب شدن رنگ ها، در PHP

توابع imagecreate و imagecreatetruecolor در PHP ، برای ساخت یک عکس جدید به کار می روند، اما یک تفاوت بسیار مهم دارند. زمانی که شما با تابع imagecreate ، یک عکس جدید می سازید، اگر اطلاعات یک عکس دیگر که مد نظرتان بوده است را در آن وارد کنید و سپس نتیجه را مشاهده نمایید (آن را به صورت یک فایل عکس ذخیره کرده و سپس آن را مشاهده کنید)، خواهید دید که رنگ های عکس، خراب شده اند و رنگ ها همانند رنگ های آن عکسی که اطلاعاتش را وارد کرده اید، نیستند. اما اگر عکس را با تابع imagecreatetruecolor بسازید، چنین اتفاقی نمی افتد و رنگ ها خراب نخواهد شد. عبارت truecolor که تفاوت بین نام این دو تابع است نیز به همین نکته اشاره دارد. بنابراین اگر با عکس ها کار می کنید، بهتر است که از تابع imagecreatetruecolor برای ساخت عکس جدید استفاده کنید.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
افزودن یک طرح (watermark - stamp) شامل متن و کادر مستطیلی و به صورت نیمه شفاف، بر روی یک عکس موجود، در PHP

افزودن یک طرح (watermark - stamp) شامل متن و کادر مستطیلی و به صورت نیمه شفاف، بر روی یک عکس موجود، در PHP

فرض کنید که یک عکس داریم و می خواهیم که یک طرح (watermark - stamp) در گوشه پایین و سمت راست آن عکس قرار بدهیم. طرح شامل دو متن خواهد بود که آنها را در کدها تعیین می کنیم و یک کادر مستطیلی شکل هم به دور آن دو متن، ساخته می شود. این طرح به صورت نیمه شفاف خواهد بود و میزان شفافیت را هم می توانیم تغییر بدهیم. دقت کنید که از توابع کتابخانه GD (یعنی GD library) استفاده می کنیم که در شماره های جدید PHP موجود است (بعید است که نسخه PHP شما، آنها را نداشته باشد).

فرض کنید که عکس اصلی دارای نام image.jpeg باشد و آن را در همان فولدر حاوی صفحه PHP قرار داده باشیم، کدهای PHP زیر را می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]<?php[/B]
[COLOR=#666666][I]// Load the stamp and the photo to apply the watermark to[/I][/COLOR]
[COLOR=#000088]$image_name[/COLOR][COLOR=#339933]=[/COLOR][COLOR=#0000FF]'image.jpeg'[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000088]$im[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]imagecreatefromjpeg[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$image_name[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#B1B100]echo[/COLOR] [COLOR=#0000FF]"<img src=[COLOR=#000099][B]\"[/B][/COLOR]"[/COLOR][COLOR=#339933].[/COLOR][COLOR=#000088]$image_name[/COLOR][COLOR=#339933].[/COLOR][COLOR=#0000FF]"[COLOR=#000099][B]\"[/B][/COLOR]>"[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#666666][I]// First we create our stamp image manually from GD[/I][/COLOR]
[COLOR=#000088]$stamp[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]imagecreatetruecolor[/COLOR][COLOR=#009900]([/COLOR][COLOR=#CC66CC]180[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]70[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagefilledrectangle[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$stamp[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]179[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]69[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#208080]0x0000FF[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagefilledrectangle[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$stamp[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]9[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]9[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]170[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]60[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#208080]0xFFFFFF[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000088]$im[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]imagecreatefromjpeg[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$image_name[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagestring[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$stamp[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]5[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]20[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]20[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#0000FF]'kelidestan.com'[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#208080]0x0000FF[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagestring[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$stamp[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]3[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]20[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]40[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#0000FF]'keys'[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#208080]0x0000FF[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#666666][I]// Set the margins for the stamp and get the height/width of the stamp image[/I][/COLOR]
[COLOR=#000088]$marge_right[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]10[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000088]$marge_bottom[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]10[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000088]$sx[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]imagesx[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$stamp[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000088]$sy[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]imagesy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$stamp[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#666666][I]// Merge the stamp onto our photo with an opacity of 50%[/I][/COLOR]
[COLOR=#990000]imagecopymerge[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$stamp[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#990000]imagesx[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#339933]-[/COLOR] [COLOR=#000088]$sx[/COLOR] [COLOR=#339933]-[/COLOR] [COLOR=#000088]$marge_right[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#990000]imagesy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#339933]-[/COLOR] [COLOR=#000088]$sy[/COLOR] [COLOR=#339933]-[/COLOR] [COLOR=#000088]$marge_bottom[/COLOR][COLOR=#339933],[/COLOR][COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#990000]imagesx[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$stamp[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#990000]imagesy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$stamp[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]50[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#666666][I]// Save the image to file and free memory[/I][/COLOR]
[COLOR=#000088]$second_image_name[/COLOR][COLOR=#339933]=[/COLOR][COLOR=#0000FF]'image_stamp.png'[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagepng[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$second_image_name[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#B1B100]echo[/COLOR] [COLOR=#0000FF]"<br /><br />"[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#B1B100]echo[/COLOR] [COLOR=#0000FF]"<img src=[COLOR=#000099][B]\"[/B][/COLOR]"[/COLOR][COLOR=#339933].[/COLOR][COLOR=#000088]$second_image_name[/COLOR][COLOR=#339933].[/COLOR][COLOR=#0000FF]"[COLOR=#000099][B]\"[/B][/COLOR]>"[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagedestroy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[B]?>[/B][/FONT]
[/FONT][/COLOR]
عکس اصلی به صورت زیر می باشد :php-3.jpg
بعد از اجرای کدها، یک عکس با نام image_stamp.png درون همان فولدر حاوی فایل PHP شامل کدها، ساخته می شود که به آن، طرح (watermark - stamp) مورد نظرمان افزوده شده است، یعنی به صورت زیر :php-4.jpg
[h=2]شرح کدهای PHP :[/h]برای باز کردن عکس های با پسوند jpg و jpeg و ذخیره اطلاعات آنها در حافظه، تابع imagecreatefromjpeg به کار می رود :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#000088]$im[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]imagecreatefromjpeg[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$image_name[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
درون تابع imagecreatetruecolor ، اندازه طول و عرض کادر مستطیلی را نوشته ایم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#000088]$stamp[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]imagecreatetruecolor[/COLOR][COLOR=#009900]([/COLOR][COLOR=#CC66CC]180[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]70[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
اگر دقت کنید، کادر دور متن ها، خود از دو مستطیل توپر با اندازه ها و رنگ های مختلف تشکیل شده است که باعث می شوند که روی هم قرار گرفتن آنها، کادر مورد نظرمان را بسازد (مستطیل توپر با تابع imagefilledrectangle ساخته می شود). مختصات x و y دو نقطه شروع و پایان کادرهای مستطیلی را درون پرانتز تابع imagefilledrectangle نوشته ایم (رنگ مستطیل ها نیز درون پرانتز تابع imagefilledrectangle نوشته شده است) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#990000]imagefilledrectangle[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$stamp[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]179[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]69[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#208080]0x0000FF[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagefilledrectangle[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$stamp[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]9[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]9[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]170[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]60[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#208080]0xFFFFFF[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
دو متن مورد نظرمان را با تابع imagestring ساخته ایم و متن مورد نظر، محل قرارگیری آنها و نیز رنگشان را هم درون پرانتز تابع imagestring ذکر کرده ایم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#990000]imagestring[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$stamp[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]5[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]20[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]20[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#0000FF]'kelidestan.com'[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#208080]0x0000FF[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagestring[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$stamp[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]3[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]20[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]40[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#0000FF]'keys'[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#208080]0x0000FF[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
تابع imagesx ، عرض (width) عکس را برمی گرداند و تابع imagesy ، ارتفاع (height) عکس را بر می گرداند.

تابع imagecopymerge برای کپی کردن یک بخش از یک عکس به درون عکس دیگر به کار می رود. ما از تابع imagecopymerge ، به صورت زیر استفاده کرده ایم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#990000]imagecopymerge[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$stamp[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#990000]imagesx[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#339933]-[/COLOR] [COLOR=#000088]$sx[/COLOR] [COLOR=#339933]-[/COLOR] [COLOR=#000088]$marge_right[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#990000]imagesy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#339933]-[/COLOR] [COLOR=#000088]$sy[/COLOR] [COLOR=#339933]-[/COLOR] [COLOR=#000088]$marge_bottom[/COLOR][COLOR=#339933],[/COLOR][COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#990000]imagesx[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$stamp[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#990000]imagesy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$stamp[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]50[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
آخرین پارامتر نوشته شده درون پرانتز دستور imagecopymerge ، برابر 50 در نظر گرفته شده است، این پارامتر، میزان شفاف بودن طرح را تعیین می کند. 50 به معنای 50 درصد است. اگر این عدد را به 0 تغییر بدهیم، اصلا طرح بر روی عکس اصلی نمایش داده نمی شود و اگر عدد را به 100 تغییر بدهیم، طرح بدون هیچگونه شفافیتی، بر روی عکس اصلی قرار می گیرد و آن را می پوشاند (پس زمینه آن که بخشی از عکس اصلی است، قابل دیدن نیست).

تابع imagepng برای ساخت یا ذخیره (save) یک عکس با فرمت PNG به کار می رود :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#990000]imagepng[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$second_image_name[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
تابع imagedestroy برای آزاد کردن حافظه اشغال شده توسط اطلاعات عکس، به کار می رود (اطلاعات عکس را از حافظه پاک می کند) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#990000]imagedestroy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
به دست آوردن اندازه عرض (width) و ارتفاع (height) یک عکس، بر حسب پیکسل (px - pixel)، با توابع imagesx و imagesy در PHP

به دست آوردن اندازه عرض (width) و ارتفاع (height) یک عکس، بر حسب پیکسل (px - pixel)، با توابع imagesx و imagesy در PHP

توابع imagesx و imagesy در PHP ، برای به دست آوردن اندازه عرض (width) و ارتفاع (height) عکس ها، بر حسب پیکسل (px - pixel)، به کار می روند.

به مثال زیر توجه کنید :

[h=4]مثال :[/h]فرض کنید که یک عکس با نام image.jpeg داریم و می خواهیم که عرض (width) و ارتفاع (height) آن را با کدهای PHP به دست آوریم. برای این منظور، از توابع imagesx و imagesy در PHP استفاده می کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]<?php[/B]
[COLOR=#000088]$image_name[/COLOR][COLOR=#339933]=[/COLOR][COLOR=#0000FF]'image.jpeg'[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000088]$im[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]imagecreatefromjpeg[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$image_name[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000088]$im_x_length[/COLOR][COLOR=#339933]=[/COLOR][COLOR=#990000]imagesx[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000088]$im_y_length[/COLOR][COLOR=#339933]=[/COLOR][COLOR=#990000]imagesy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagedestroy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#B1B100]echo[/COLOR] [COLOR=#0000FF]"image X length : "[/COLOR][COLOR=#339933].[/COLOR][COLOR=#000088]$im_x_length[/COLOR][COLOR=#339933].[/COLOR][COLOR=#0000FF]" pixel"[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#B1B100]echo[/COLOR] [COLOR=#0000FF]"<br />"[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#B1B100]echo[/COLOR] [COLOR=#0000FF]"image Y length : "[/COLOR][COLOR=#339933].[/COLOR][COLOR=#000088]$im_y_length[/COLOR][COLOR=#339933].[/COLOR][COLOR=#0000FF]" pixel"[/COLOR][COLOR=#339933];[/COLOR]
[B]?>[/B][/FONT]
[/FONT][/COLOR]
[h=4]نتیجه :[/h]اجرای کد PHP بالا، برای یک عکس با اندازه 259 در 194 پیکسل (px)، نتیجه زیر را می دهد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]image X length [COLOR=#339933]:[/COLOR] [COLOR=#CC66CC]259[/COLOR] pixel
image Y length [COLOR=#339933]:[/COLOR] [COLOR=#CC66CC]194[/COLOR] pixel[/FONT]
[/FONT][/COLOR]
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
افزودن یک عکس بر روی یک عکس دیگر (watermark - stamp)، در PHP

افزودن یک عکس بر روی یک عکس دیگر (watermark - stamp)، در PHP

فرض کنید که دو عکس داریم و می خواهیم یک عکس بر روی عکس دیگر قرار داده شود. مثلا فرض کنید که کاربران در سایت شما، تصویر آپلود می کنند و شما قصد دارید که لوگوی (logo) سایت خود را که به صورت یک عکس می باشد، بر روی تصاویر آپلود شده توسط کاربران قرار بدهید. برای این منظور، می توانیم از کدهای PHP استفاده کنیم. دقت کنید که در کدهای PHP ، از توابع مربوط به کتابخانه GD استفاده خواهیم کرد که در شماره های جدید PHP وجود دارد، البته خیلی نگران نباشید چون دیگر اکثر سرورها، از جدیدترین نسخه های PHP استفاده می کنند.

فرض کنید که عکس اصلی دارای نام image.jpeg باشد و عکس لوگوی سایت، دارای نام logo.png باشد و هر دوی آنها را در همان فولدر حاوی صفحه PHP قرار داده باشیم، کدهای PHP زیر را می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]<?php[/B]
[COLOR=#000088]$image_name[/COLOR][COLOR=#339933]=[/COLOR][COLOR=#0000FF]'image.jpeg'[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000088]$logo_name[/COLOR][COLOR=#339933]=[/COLOR][COLOR=#0000FF]'logo.png'[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000088]$im_1[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]imagecreatefromjpeg[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$image_name[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000088]$im_2[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]imagecreatefrompng[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$logo_name[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#B1B100]echo[/COLOR] [COLOR=#0000FF]"<img src=[COLOR=#000099][B]\"[/B][/COLOR]"[/COLOR][COLOR=#339933].[/COLOR][COLOR=#000088]$image_name[/COLOR][COLOR=#339933].[/COLOR][COLOR=#0000FF]"[COLOR=#000099][B]\"[/B][/COLOR]>"[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#000088]$marge_right[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]10[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000088]$marge_bottom[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]10[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000088]$sx[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]imagesx[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im_2[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000088]$sy[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]imagesy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im_2[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#990000]imagecopy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im_1[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$im_2[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#990000]imagesx[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im_1[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#339933]-[/COLOR] [COLOR=#000088]$sx[/COLOR] [COLOR=#339933]-[/COLOR] [COLOR=#000088]$marge_right[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#990000]imagesy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im_1[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#339933]-[/COLOR] [COLOR=#000088]$sy[/COLOR] [COLOR=#339933]-[/COLOR] [COLOR=#000088]$marge_bottom[/COLOR][COLOR=#339933],[/COLOR][COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#990000]imagesx[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im_2[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#990000]imagesy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im_2[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#000088]$second_image_name[/COLOR][COLOR=#339933]=[/COLOR][COLOR=#0000FF]'image_with_logo.png'[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagepng[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im_1[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$second_image_name[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#B1B100]echo[/COLOR] [COLOR=#0000FF]"<br /><br />"[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#B1B100]echo[/COLOR] [COLOR=#0000FF]"<img src=[COLOR=#000099][B]\"[/B][/COLOR]"[/COLOR][COLOR=#339933].[/COLOR][COLOR=#000088]$second_image_name[/COLOR][COLOR=#339933].[/COLOR][COLOR=#0000FF]"[COLOR=#000099][B]\"[/B][/COLOR]>"[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagedestroy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im_1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagedestroy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im_2[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[B]?>[/B][/FONT]
[/FONT][/COLOR]
عکس اصلی به صورت زیر می باشد :php-5.jpeg
و عکس لوگو (logo - طرح) که می خواهیم بر روی عکس قبلی قرار بگیرد، به صورت زیر است :مشاهده پیوست 248981
بعد از اجرای کدها، یک عکس با نام image_with_logo.png درون همان فولدر حاوی فایل PHP شامل کدها، ساخته می شود که به آن، طرح (watermark - stamp - logo) مورد نظرمان افزوده شده است، یعنی به صورت زیر :php-7.jpegشرح کدهای PHP :

برای باز کردن عکس های با پسوند jpg و jpeg و ذخیره اطلاعات آنها در حافظه، تابع imagecreatefromjpeg و برای عکس های با پسوند png ، تابع imagecreatefrompng به کار می رود :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#000088]$im_1[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]imagecreatefromjpeg[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$image_name[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000088]$im_2[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]imagecreatefrompng[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$logo_name[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
تابع imagecopy برای قرار دادن لوگو بر روی عکس دیگر به کار رفته است. از تابع imagecopy ، به صورت زیر استفاده کرده ایم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#990000]imagecopy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im_1[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$im_2[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#990000]imagesx[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im_1[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#339933]-[/COLOR] [COLOR=#000088]$sx[/COLOR] [COLOR=#339933]-[/COLOR] [COLOR=#000088]$marge_right[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#990000]imagesy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im_1[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#339933]-[/COLOR] [COLOR=#000088]$sy[/COLOR] [COLOR=#339933]-[/COLOR] [COLOR=#000088]$marge_bottom[/COLOR][COLOR=#339933],[/COLOR][COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#990000]imagesx[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im_2[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#990000]imagesy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im_2[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
تابع imagepng برای ساخت یا ذخیره (save) یک عکس با فرمت PNG به کار می رود :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#990000]imagepng[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im_1[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$second_image_name[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
تابع imagedestroy برای آزاد کردن حافظه اشغال شده توسط اطلاعات عکس، به کار می رود (اطلاعات عکس را از حافظه پاک می کند) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#990000]imagedestroy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im_1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagedestroy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im_2[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
چسباندن دو عکس به یکدیگر، در جهت عمودی، در PHP

چسباندن دو عکس به یکدیگر، در جهت عمودی، در PHP

فرض کنید که دو عکس داریم و می خواهیم که آن دو را با یک سری کد، در جهت عمودی، به یکدیگر متصل کنیم. یعنی عکسی ساخته می شود که عکس اول در بالای آن و عکس دوم در پایین آن قرار می گیرد و عرض (width) عکس ترکیب شده، برابر ماکزیمم اندازه عرض آن دو عکس می باشد. برای این منظور، می توانیم از کدهای PHP استفاده کنیم. دقت کنید که در کدهای PHP ، از توابع مربوط به کتابخانه GD استفاده خواهیم کرد که در شماره های جدید PHP وجود دارد، البته خیلی نگران نباشید چون دیگر اکثر سرورها، از جدیدترین نسخه های PHP استفاده می کنند.

فرض کنید که عکس اول (عکسی که در بالا قرار می گیرد) دارای نام image1.png باشد و عکس دوم (عکسی که در پایین قرار می گیرد)، دارای نام image2.png باشد و هر دوی آنها را در همان فولدر حاوی صفحه PHP قرار داده باشیم، کدهای PHP زیر را می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]<?php[/B]
[COLOR=#000088]$top_file[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]'image1.png'[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000088]$bottom_file[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]'image2.png'[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#000088]$top[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]imagecreatefrompng[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$top_file[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000088]$bottom[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]imagecreatefrompng[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$bottom_file[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#666666][I]// show images[/I][/COLOR]
[COLOR=#B1B100]echo[/COLOR] [COLOR=#0000FF]"<img src=[COLOR=#000099][B]\"[/B][/COLOR]"[/COLOR][COLOR=#339933].[/COLOR][COLOR=#000088]$top_file[/COLOR][COLOR=#339933].[/COLOR][COLOR=#0000FF]"[COLOR=#000099][B]\"[/B][/COLOR]>"[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#B1B100]echo[/COLOR] [COLOR=#0000FF]"<br /><br />"[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#B1B100]echo[/COLOR] [COLOR=#0000FF]"<img src=[COLOR=#000099][B]\"[/B][/COLOR]"[/COLOR][COLOR=#339933].[/COLOR][COLOR=#000088]$bottom_file[/COLOR][COLOR=#339933].[/COLOR][COLOR=#0000FF]"[COLOR=#000099][B]\"[/B][/COLOR]>"[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#666666][I]// get current width/height[/I][/COLOR]
[COLOR=#990000]list[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$top_width[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$top_height[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]getimagesize[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$top_file[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]list[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$bottom_width[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$bottom_height[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]getimagesize[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$bottom_file[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#666666][I]// compute new width/height[/I][/COLOR]
[COLOR=#000088]$new_width[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#000088]$top_width[/COLOR] [COLOR=#339933]>[/COLOR] [COLOR=#000088]$bottom_width[/COLOR][COLOR=#009900])[/COLOR] ? [COLOR=#000088]$top_width[/COLOR] [COLOR=#339933]:[/COLOR] [COLOR=#000088]$bottom_width[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000088]$new_height[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#000088]$top_height[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#000088]$bottom_height[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#666666][I]// create new image and merge[/I][/COLOR]
[COLOR=#000088]$new[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]imagecreatetruecolor[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$new_width[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$new_height[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagecopy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$new[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$top[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$top_width[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$top_height[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagecopy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$new[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$bottom[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$top_height[/COLOR][COLOR=#339933]+[/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$bottom_width[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$bottom_height[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#666666][I]// save to file[/I][/COLOR]
[COLOR=#000088]$new_name[/COLOR][COLOR=#339933]=[/COLOR][COLOR=#0000FF]'merged_image.png'[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagepng[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$new[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$new_name[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#666666][I]// show image[/I][/COLOR]
[COLOR=#B1B100]echo[/COLOR] [COLOR=#0000FF]"<br /><br />"[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#B1B100]echo[/COLOR] [COLOR=#0000FF]"<img src=[COLOR=#000099][B]\"[/B][/COLOR]"[/COLOR][COLOR=#339933].[/COLOR][COLOR=#000088]$new_name[/COLOR][COLOR=#339933].[/COLOR][COLOR=#0000FF]"[COLOR=#000099][B]\"[/B][/COLOR]>"[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#666666][I]// free the memory[/I][/COLOR]
[COLOR=#990000]imagedestroy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$top[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagedestroy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$bottom[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagedestroy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$new[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[B]?>[/B][/FONT]
[/FONT][/COLOR]
عکس اول به صورت زیر می باشد :php-8.png
و عکس دوم که باید در پایین عکس قبلی قرار بگیرد، به صورت زیر است :php-9.png
بعد از اجرای کدها، یک عکس با نام merged_image.png درون همان فولدر حاوی فایل PHP شامل کدها، ساخته می شود که به صورت زیر می باشد :php-10.jpgهمان طور که مشاهده می کنید، چون عکس اول دارای عرض کمتری بوده است، بنابراین در کنار آن، به جای قسمتی که خالی می ماند، رنگ سیاه نمایش داده شده است.


شرح کدهای PHP :

برای باز کردن عکس های با پسوند png و ذخیره اطلاعات آنها در حافظه، تابع imagecreatefrompng به کار می رود :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#000088]$top[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]imagecreatefrompng[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$top_file[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000088]$bottom[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]imagecreatefrompng[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$bottom_file[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
ابتدا با تابع imagecreatetruecolor ، یک عکس (image source) ساخته ایم (استفاده از این تابع، باعث می شود که رنگ های دو عکس، حفظ شوند و تغییری در رنگ ها، هنگام ساخت عکس نهایی، نداشته باشیم). سپس با تابع imagecopy ، دو عکس دیگر را در آن قرار داده ایم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#000088]$new[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]imagecreatetruecolor[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$new_width[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$new_height[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagecopy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$new[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$top[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$top_width[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$top_height[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagecopy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$new[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$bottom[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$top_height[/COLOR][COLOR=#339933]+[/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$bottom_width[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$bottom_height[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
تابع imagepng برای ساخت یا ذخیره (save) یک عکس با فرمت PNG به کار می رود :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#990000]imagepng[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$new[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$new_name[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
تابع imagedestroy برای آزاد کردن حافظه اشغال شده توسط اطلاعات عکس، به کار می رود (اطلاعات عکس را از حافظه پاک می کند) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#990000]imagedestroy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$top[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagedestroy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$bottom[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagedestroy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$new[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
تبدیل متن به عکس، در PHP

تبدیل متن به عکس، در PHP

فرض کنید که می خواهیم با استفاده از کدهای PHP ، یک متن دلخواه را به یک عکس تبدیل کرده و آن عکس را در پوشه (folder) حاوی صفحه PHP ، ذخیره کنیم. اولین نکته این است که باید فایل مربوط به فونت مورد نظرمان را در پوشه (folder) قرار داده باشیم، زیرا فونت متن در عکس، بر اساس آن می باشد. سپس کدهای PHP زیر را می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]<?php[/B]
[COLOR=#666666][I]// Create the image[/I][/COLOR]
[COLOR=#000088]$im[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]imagecreatetruecolor[/COLOR][COLOR=#009900]([/COLOR][COLOR=#CC66CC]400[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]30[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#666666][I]// Create some colors[/I][/COLOR]
[COLOR=#000088]$white[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]imagecolorallocate[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]255[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]255[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]255[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000088]$grey[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]imagecolorallocate[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]128[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]128[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]128[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000088]$black[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]imagecolorallocate[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagefilledrectangle[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]399[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]29[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$white[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#666666][I]// The text to draw[/I][/COLOR]
[COLOR=#000088]$text[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]'www.kelidestan.com'[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#666666][I]// Replace path by your own font path[/I][/COLOR]
[COLOR=#000088]$font[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]'arial.ttf'[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#666666][I]// Add some shadow to the text[/I][/COLOR]
[COLOR=#990000]imagettftext[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]20[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]11[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]21[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$grey[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$font[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$text[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#666666][I]// Add the text[/I][/COLOR]
[COLOR=#990000]imagettftext[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]20[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]10[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#CC66CC]20[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$black[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$font[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$text[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#666666][I]// Create image in folder[/I][/COLOR]
[COLOR=#000088]$image_name[/COLOR][COLOR=#339933]=[/COLOR][COLOR=#0000FF]'my_image.png'[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagepng[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$image_name[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#990000]imagedestroy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$im[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#666666][I]// Show image in output page[/I][/COLOR]
[COLOR=#B1B100]echo[/COLOR] [COLOR=#0000FF]"<img src=[COLOR=#000099][B]\"[/B][/COLOR]"[/COLOR][COLOR=#339933].[/COLOR][COLOR=#000088]$image_name[/COLOR][COLOR=#339933].[/COLOR][COLOR=#0000FF]"[COLOR=#000099][B]\"[/B][/COLOR]>"[/COLOR][COLOR=#339933];[/COLOR]
[B]?>[/B][/FONT]
[/FONT][/COLOR]
فایل مربوط به فونت، دارای نام arial.ttf است و آن را در پوشه (folder) حاوی فایل PHP قرار داده ایم و مسیر آن را در خط زیر مشخص کرده ایم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#000088]$font[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]'arial.ttf'[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
متن مورد نظرمان را برابر www.www.www.iran-eng.ir در نظر گرفته ایم و آن را در خط زیر تعریف کرده ایم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#000088]$text[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]'www.www.www.iran-eng.ir'[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
نام عکس خروجی که در فولدر حاوی فایل PHP ذخیره می شود را برابر my_image.png تعیین کرده ایم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#000088]$image_name[/COLOR][COLOR=#339933]=[/COLOR][COLOR=#0000FF]'my_image.png'[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
[h=4]نتیجه :[/h]عکس ذخیره شده، به صورت زیر می باشد :Untitled.jpg
 

Similar threads

بالا