افزودن یک عکس بر روی یک عکس دیگر (watermark - stamp)، در PHP
فرض کنید که دو عکس داریم و می خواهیم یک عکس بر روی عکس دیگر قرار داده شود. مثلا فرض کنید که کاربران در سایت شما، تصویر آپلود می کنند و شما قصد دارید که لوگوی (logo) سایت خود را که به صورت یک عکس می باشد، بر روی تصاویر آپلود شده توسط کاربران قرار بدهید. برای این منظور، می توانیم از کدهای PHP استفاده کنیم. دقت کنید که در کدهای PHP ، از توابع مربوط به کتابخانه GD استفاده خواهیم کرد که در شماره های جدید PHP وجود دارد، البته خیلی نگران نباشید چون دیگر اکثر سرورها، از جدیدترین نسخه های PHP استفاده می کنند.
فرض کنید که عکس اصلی دارای نام image.jpeg باشد و عکس لوگوی سایت، دارای نام logo.png باشد و هر دوی آنها را در همان فولدر حاوی صفحه PHP قرار داده باشیم، کدهای PHP زیر را می نویسیم :
عکس اصلی به صورت زیر می باشد :
و عکس لوگو (logo - طرح) که می خواهیم بر روی عکس قبلی قرار بگیرد، به صورت زیر است :
بعد از اجرای کدها، یک عکس با نام image_with_logo.png درون همان فولدر حاوی فایل PHP شامل کدها، ساخته می شود که به آن، طرح (watermark - stamp - logo) مورد نظرمان افزوده شده است، یعنی به صورت زیر :
شرح کدهای PHP :
برای باز کردن عکس های با پسوند jpg و jpeg و ذخیره اطلاعات آنها در حافظه، تابع imagecreatefromjpeg و برای عکس های با پسوند png ، تابع imagecreatefrompng به کار می رود :
تابع imagecopy برای قرار دادن لوگو بر روی عکس دیگر به کار رفته است. از تابع imagecopy ، به صورت زیر استفاده کرده ایم :
تابع imagepng برای ساخت یا ذخیره (save) یک عکس با فرمت PNG به کار می رود :
تابع imagedestroy برای آزاد کردن حافظه اشغال شده توسط اطلاعات عکس، به کار می رود (اطلاعات عکس را از حافظه پاک می کند) :
اموزشتون برای واترمارک با php عالی بود اما لطفا گسترده ترش کنید: مثلا تعویض محل لوگو یا ....
سلام وقت بخیر، تشکر بابت این آموزش. بنده سوالم این هست که ما نام عکس رو از دیتابیس دریافت میکنیم و چند تا هم تیبل داریم که نام گذاری هر کدوم از متغیرها برای فایل عکس متفاوت هست در این صورت چطور باید آدرس و نام عکس اصلی رو بدبم بهش و اینکه این فایل رو دقیقا در کجا قرار بدبم؟ و بعد با چه تابعی نمایشش بدیم و اصلا از کجا فراخوانی کنیم؟