افزودن یک طرح (watermark - stamp) شامل متن و کادر مستطیلی و به صورت نیمه شفاف، بر روی یک عکس موجود، در PHP
فرض کنید که یک عکس داریم و می خواهیم که یک طرح (watermark - stamp) در گوشه پایین و سمت راست آن عکس قرار بدهیم. طرح شامل دو متن خواهد بود که آنها را در کدها تعیین می کنیم و یک کادر مستطیلی شکل هم به دور آن دو متن، ساخته می شود. این طرح به صورت نیمه شفاف خواهد بود و میزان شفافیت را هم می توانیم تغییر بدهیم. دقت کنید که از توابع کتابخانه GD (یعنی GD library) استفاده می کنیم که در شماره های جدید PHP موجود است (بعید است که نسخه PHP شما، آنها را نداشته باشد).
فرض کنید که عکس اصلی دارای نام image.jpeg باشد و آن را در همان فولدر حاوی صفحه PHP قرار داده باشیم، کدهای PHP زیر را می نویسیم :
عکس اصلی به صورت زیر می باشد :
بعد از اجرای کدها، یک عکس با نام image_stamp.png درون همان فولدر حاوی فایل PHP شامل کدها، ساخته می شود که به آن، طرح (watermark - stamp) مورد نظرمان افزوده شده است، یعنی به صورت زیر :
شرح کدهای PHP :
برای باز کردن عکس های با پسوند jpg و jpeg و ذخیره اطلاعات آنها در حافظه، تابع imagecreatefromjpeg به کار می رود :
درون تابع imagecreatetruecolor ، اندازه طول و عرض کادر مستطیلی را نوشته ایم :
اگر دقت کنید، کادر دور متن ها، خود از دو مستطیل توپر با اندازه ها و رنگ های مختلف تشکیل شده است که باعث می شوند که روی هم قرار گرفتن آنها، کادر مورد نظرمان را بسازد (مستطیل توپر با تابع imagefilledrectangle ساخته می شود). مختصات x و y دو نقطه شروع و پایان کادرهای مستطیلی را درون پرانتز تابع imagefilledrectangle نوشته ایم (رنگ مستطیل ها نیز درون پرانتز تابع imagefilledrectangle نوشته شده است) :
دو متن مورد نظرمان را با تابع imagestring ساخته ایم و متن مورد نظر، محل قرارگیری آنها و نیز رنگشان را هم درون پرانتز تابع imagestring ذکر کرده ایم :
تابع imagesx ، عرض (width) عکس را برمی گرداند و تابع imagesy ، ارتفاع (height) عکس را بر می گرداند.
تابع imagecopymerge برای کپی کردن یک بخش از یک عکس به درون عکس دیگر به کار می رود. ما از تابع imagecopymerge ، به صورت زیر استفاده کرده ایم :
آخرین پارامتر نوشته شده درون پرانتز دستور imagecopymerge ، برابر 50 در نظر گرفته شده است، این پارامتر، میزان شفاف بودن طرح را تعیین می کند. 50 به معنای 50 درصد است. اگر این عدد را به 0 تغییر بدهیم، اصلا طرح بر روی عکس اصلی نمایش داده نمی شود و اگر عدد را به 100 تغییر بدهیم، طرح بدون هیچگونه شفافیتی، بر روی عکس اصلی قرار می گیرد و آن را می پوشاند (پس زمینه آن که بخشی از عکس اصلی است، قابل دیدن نیست).
تابع imagepng برای ساخت یا ذخیره (save) یک عکس با فرمت PNG به کار می رود :
تابع imagedestroy برای آزاد کردن حافظه اشغال شده توسط اطلاعات عکس، به کار می رود (اطلاعات عکس را از حافظه پاک می کند) :