اسکریپت باران
بزرگترین مرجع دانلود سورس و اسکریپت های برنامه نویسی
فرض کنید که یک عکس داریم و می خواهیم که یک طرح (watermark – stamp) در گوشه پایین و سمت راست آن عکس قرار بدهیم. طرح شامل دو متن خواهد بود که آنها را در کدها تعیین می کنیم و یک کادر مستطیلی شکل هم به دور آن دو متن، ساخته می شود. این طرح به صورت نیمه شفاف خواهد بود و میزان شفافیت را هم می توانیم تغییر بدهیم. دقت کنید که از توابع کتابخانه GD (یعنی GD library) استفاده می کنیم که در شماره های جدید PHP موجود است (بعید است که نسخه PHP شما، آنها را نداشته باشد).
فرض کنید که عکس اصلی دارای نام image.jpeg باشد و آن را در همان فولدر حاوی صفحه PHP قرار داده باشیم، کدهای PHP زیر را می نویسیم :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<?php // Load the stamp and the photo to apply the watermark to $image_name='image.jpeg'; $im = imagecreatefromjpeg($image_name); echo "<img src=\"".$image_name."\">"; // First we create our stamp image manually from GD $stamp = imagecreatetruecolor(180, 70); imagefilledrectangle($stamp, 0, 0, 179, 69, 0x0000FF); imagefilledrectangle($stamp, 9, 9, 170, 60, 0xFFFFFF); $im = imagecreatefromjpeg($image_name); imagestring($stamp, 5, 20, 20, 'scriptbaran.com', 0x0000FF); imagestring($stamp, 3, 20, 40, 'keys', 0x0000FF); // Set the margins for the stamp and get the height/width of the stamp image $marge_right = 10; $marge_bottom = 10; $sx = imagesx($stamp); $sy = imagesy($stamp); // Merge the stamp onto our photo with an opacity of 50% imagecopymerge($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp), 50); // Save the image to file and free memory $second_image_name='image_stamp.png'; imagepng($im, $second_image_name); echo "<br /><br />"; echo "<img src=\"".$second_image_name."\">"; imagedestroy($im); ?> |
عکس اصلی به صورت زیر می باشد :
بعد از اجرای کدها، یک عکس با نام image_stamp.png درون همان فولدر حاوی فایل PHP شامل کدها، ساخته می شود که به آن، طرح (watermark – stamp) مورد نظرمان افزوده شده است.
برای باز کردن عکس های با پسوند jpg و jpeg و ذخیره اطلاعات آنها در حافظه، تابع imagecreatefromjpeg به کار می رود :
1 |
$im = imagecreatefromjpeg($image_name); |
درون تابع imagecreatetruecolor ، اندازه طول و عرض کادر مستطیلی را نوشته ایم :
1 |
$stamp = imagecreatetruecolor(180, 70); |
اگر دقت کنید، کادر دور متن ها، خود از دو مستطیل توپر با اندازه ها و رنگ های مختلف تشکیل شده است که باعث می شوند که روی هم قرار گرفتن آنها، کادر مورد نظرمان را بسازد (مستطیل توپر با تابع imagefilledrectangle ساخته می شود). مختصات x و y دو نقطه شروع و پایان کادرهای مستطیلی را درون پرانتز تابع imagefilledrectangle نوشته ایم (رنگ مستطیل ها نیز درون پرانتز تابع imagefilledrectangle نوشته شده است) :
1 2 |
imagefilledrectangle($stamp, 0, 0, 179, 69, 0x0000FF); imagefilledrectangle($stamp, 9, 9, 170, 60, 0xFFFFFF); |
دو متن مورد نظرمان را با تابع imagestring ساخته ایم و متن مورد نظر، محل قرارگیری آنها و نیز رنگشان را هم درون پرانتز تابع imagestring ذکر کرده ایم :
1 2 |
imagestring($stamp, 5, 20, 20, 'scriptbaran.com', 0x0000FF); imagestring($stamp, 3, 20, 40, 'keys', 0x0000FF); |
تابع imagesx ، عرض (width) عکس را برمی گرداند و تابع imagesy ، ارتفاع (height) عکس را بر می گرداند.
تابع imagecopymerge برای کپی کردن یک بخش از یک عکس به درون عکس دیگر به کار می رود. ما از تابع imagecopymerge ، به صورت زیر استفاده کرده ایم :
1 |
imagecopymerge($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0,0, imagesx($stamp), imagesy($stamp), 50); |
آخرین پارامتر نوشته شده درون پرانتز دستور imagecopymerge ، برابر 50 در نظر گرفته شده است، این پارامتر، میزان شفاف بودن طرح را تعیین می کند. 50 به معنای 50 درصد است. اگر این عدد را به 0 تغییر بدهیم، اصلا طرح بر روی عکس اصلی نمایش داده نمی شود و اگر عدد را به 100 تغییر بدهیم، طرح بدون هیچگونه شفافیتی، بر روی عکس اصلی قرار می گیرد و آن را می پوشاند (پس زمینه آن که بخشی از عکس اصلی است، قابل دیدن نیست).
تابع imagepng برای ساخت یا ذخیره (save) یک عکس با فرمت PNG به کار می رود :
1 |
imagepng($im, $second_image_name); |
تابع imagedestroy برای آزاد کردن حافظه اشغال شده توسط اطلاعات عکس، به کار می رود (اطلاعات عکس را از حافظه پاک می کند) :
1 |
imagedestroy($im); |
کانال تلگرامی اسکریپت باران
برای اطلاع از آپدیت های این سورس و سورس های دیگر اسکریپت باران، در کانال تلگرام ما عضو شویدبرنامه نویسی را معنایی دوباره بخشیم !