Kompyuter darslari

php suv belgisi. PHP yordamida suv belgilarini yaratish

Tasvirlaringiz va videolaringizni Internetda nashr qilishda siz katta tavakkal qilasiz, chunki materiallaringiz yuzlab boshqa manbalarga osongina ko'chirilishi mumkin. Yangilik uchun rasmingizni, masalan, siz ustida ko'p ishlagan, manbani, ya'ni saytingizni ko'rsatmasdan boshqa saytda topish unchalik zo'r bo'lmaydi, shunday emasmi? Yumshoq qilib aytganda, siz xafa bo'lasiz va agar bu yangilik uchun oddiy rasm emas, balki Photoshop'dagi murakkab ish bo'lsa, jahlim chiqadi, deyish hech narsa demaslikdir! Xo'sh, grafikangizni himoya qilish uchun nima qilishingiz mumkin?

Internetdagi tasvirlar yoki videolarning mualliflik huquqini himoya qilish uchun, odatda, qulaylik uchun raqamli suv belgisi yoki raqamli moybo'yoq ishlatiladi. Har bir yuklangan rasmni himoya qilish uchun unga raqamli imzo qo'shing. CEZ veb-saytingiz yoki kompaniyangizning logotipi bo'lishi mumkin, yuklangan rasmlarga chiroyli va estetik tarzda joylashtirilgan.

Keling, avval konstantalar ko'rinishida kerakli sozlamalarni o'z ichiga olgan faylni yarataylik - /config.php:

Define("WATERMARK_OVERLAY_IMAGE", "/develop/images/watermark.png"); // Markaziy koʻrgazma zalingizga yoʻl aniqlang("WATERMARK_OUTPUT_QUALITY", 100); // Raqamli video yozuvdan olingan tasvirning sifati. Sifat fayl hajmiga bevosita ta'sir qilishini unutmang. define("UPLOADED_IMAGE_DESTINATION", "/develop/papka1/"); // Asl yuklangan tasvirlar joylashuviga yo'lni aniqlang ("WATERMARK_IMAGE_DESTINATION", "/develop/papka2/"); // Raqamli to'lqin shaklidagi rasmlarga yo'l

Yuklashni amalga oshiruvchi faylda yuqorida yaratilgan fayllarni yig'amiz /upload.php

Include("config.php"); include("functions.php"); $result = ImageUpload($_FILES["userfile"]["tmp_name"], $_FILES["userfile"]["name"]); if ($result === false)( echo "Yuklab olish amalga oshmadi!"; )

Misol uchun, agar yuklangan rasm:

Keyin moybo'yoqni yuklab olib, qo'llaganingizdan so'ng siz quyidagi rasmni olasiz:

Ushbu misolda, yuklab olingan rasm bitta papkada saqlanadi va raqamli moybo'yoqli tasvir boshqa papkada saqlanadi, shunda siz har doim asl rasmlarga kirishingiz mumkin, lekin, albatta, raqamli papkadan rasmlarni joylashtirishga arziydi. saytida ko'rgazma.

(178,4 Kb, 989 marta ko'rilgan)

Veb-saytlar egalari (forumlar, xabarlar taxtasi va boshqalar) ko'pincha saytning barcha katta rasmlarida moybo'yoqli belgilar yaratish muammosiga duch kelishadi.

Albatta, siz bu muammoni har bir rasmda qo'lda moybo'yoqli yaratish orqali hal qilishingiz mumkin, biroq, birinchidan, bu juda ko'p vaqtni oladi, ikkinchidan, suv belgisi bilan va bo'lmasdan tasvirning ikkita versiyasini saqlash kerak bo'ladi.

Ushbu muammoni hal qilish, uni saytga tashrif buyuruvchiga yuborishdan oldin rasmga moybo'yoqni dinamik ravishda qo'llash bo'lishi mumkin.

Ushbu muammoni Internetda ikkita fayl ko'rinishida hal qilish mumkin, ularning mazmuni quyida keltirilgan.
".htaccess" faylining manba kodi

DirectoryIndex index.php RewriteEngine On RewriteCond %(REQUEST_FILENAME) -f RewriteRule ^(.*)$ /watermark/_watermark.php

"_watermark.php" faylining manba kodi

250) && ($info_o > 250)) ( // Alfa-kanalsiz tasvirlar uchun // Funksiyaning oxirgi parametri suv belgisining shaffoflik darajasi imageCopyMerge($out, $watermark, ($info_o-$info_w)/ 2, ($info_o -$info_w)/2, 0, 0, $info_w, $info_w, 25); // Alfa-kanalli tasvirlar uchun // Bunday holda, shaffoflik tasvirning alfa-kanali tomonidan o'rnatiladi. o'zi // imageCopy($out, $watermark, ($info_o-$info_w)/2, ($info_o-$info_w)/2, 0, 0, $info_w, $info_w ) kaliti ($info_o) (1-holat: imageGIF($out 2: imageJPEG($out); default; imageDestroy($original); imageDestroy($suv belgisi); haqiqatni qaytarish; ) ?>

Yechim quyidagicha bo'ladi: ".htaccess" fayli rasm fayllari bilan katalogga joylashtiriladi. Bunga qo'shimcha ravishda, serverda "suv belgisi" papkasi yaratiladi, unda "_watermark.php" skript fayli va haqiqiy suv belgisi fayli "watermark.png" mavjud.

Shu bilan birga, Internetda topilgan asl versiya bilan solishtirganda, men ikkala matn fayliga ham kichik o'zgarishlar kiritdim.

".htaccess" faylida "jpeg" kengaytmasi tasvir fayllarini qidirish uchun odatiy ifodaga qo'shilgan, chunki u ham tez-tez uchraydi.

"_watermark.php" skripti moybo'yoqni tasvirning o'rtasiga qo'yadigan tarzda qayta ishlangan (bu hal qilinayotgan muammoning o'ziga xosligi bilan talab qilingan) va yaratilgan moybo'yoqning shaffofligini sozlash imkoniyati mavjud. qo'shildi (skriptning asosiy qismidagi sharhlar ushbu parametrni o'zingiz sozlashingizga yordam beradi).

Asl manbalar maslahat berganidek, "suv belgisi" jildini tasvirlar bilan papkaga joylashtirish biz xohlagan natijaga erisha olmasligimizga ham e'tibor berishingiz kerak, chunki bu holda biz har bir papkada o'z ".htaccess" fayli va "watermark" papkasiga ega bo'lishimiz kerak bo'ladi. Buning sababi shundaki, ".htaccess" fayli saytning asosiy katalogidan "_watermark.php" fayliga mutlaq yo'llarni belgilaydi. Shunday qilib, rasmlari bo'lgan har bir papkada alohida "suv belgisi" pastki papkasiga ega bo'lsak, moybo'yoqni (yoki uni tasvirga qo'yadigan skriptni) o'zgartirishimiz kerak bo'lsa, biz barcha papkalarga o'zgartirishlar kiritishimiz kerak bo'ladi.

Bunday muammoning oldini olish uchun men saytning asosiy katalogida "suv belgisi" papkasini yaratishni va uni har safar o'zgartirmasdan ".htaccess" faylini tasvir kataloglariga joylashtirishni tavsiya qilaman. Bunday holda, moybo'yoqli yoki skriptni o'zgartirish uchun biz saytning faqat bitta joyiga o'zgartirish kiritishimiz kerak bo'ladi. Bunday holda, siz turli xil ".htaccess" fayllaridan turli skriptlarga murojaat qilib, tasvirlar bilan turli papkalar uchun turli xil moybo'yoqlarni yaratishingiz mumkin, masalan, "_watermark-1.php", "_watermark-2.php" va hokazo.

Shunday qilib, xulosa qilish uchun shuni aytishimiz mumkinki, saytning barcha rasmlariga moybo'yoqli belgilarni qo'llash uchun siz quyida biriktirilgan arxivni yuklab olishingiz, uni ochishingiz, "suv belgisi" papkasini saytning asosiy katalogiga joylashtirishingiz, moybo'yoqli faylni almashtirishingiz kerak " watermark.png” faylini oʻzingiz kiriting va “.htaccess” faylini oʻsha sayt kataloglariga joylashtiring, ularning rasmlari moyboʻyoqli boʻlishi kerak.

Bu yerda siz barcha kerakli fayllarni o'z ichiga olgan arxivni yuklab olishingiz mumkin

Agar siz rasm muharrirlari bilan bezovta qilmasdan rasmga moybo'yoqli qo'shmoqchi bo'lsangiz yoki fotosuratlarni serverga yuklayotganda qo'shmoqchi bo'lsangiz, unda ushbu qo'llanma siz uchun.

Ushbu qo'llanmada men sizga asl tasvirni o'zgartirmasdan tezda tasvirga moybo'yoqli qo'shishni ko'rsataman. Avvalo, sizga moybo'yoq sifatida foydalanish uchun rasm kerak bo'ladi.

Keyin fayl sarlavhasini shakllantiramiz:

// bu satr brauzerga jpg tasvir sarlavhasini o'tkazayotganimizni bildiradi("content-type: image/jpeg");

Keyin biz png tasvirini yaratamiz va uning o'lchamlarini olamiz:

// png formatida moybo'yoq yaratish $watermark = imagecreatefrompng("watermark.png"); // kenglik va balandlikni oling $watermark_width = imagesx($watermark); $watermark_height = tasviriy ($watermark);

Biz asl rasm bilan xuddi shunday qilamiz, lekin faqat jpg formatida. Bu shakl orqali yuklangan fotosuratlar uchun keng tarqalgan. Biz quyidagicha harakat qilamiz:

// jpg rasmini yaratish $image_path = "original.jpg"; $image = imagecreatefromjpeg($image_path); // tasvir hajmini olish $size = getimagesize($image_path);

Endi biz rasmga moybo'yoqli qo'yishimiz kerak:

// pastki o'ng tomonga moybo'yoqli belgi qo'ying. Indent 5px $dest_x = $size - $watermark_width - 5; $dest_y = $size - $watermark_height - 5;

Keyin ikkala rasm uchun aralashtirish parametrlarini o'rnatamiz:

Imagealphablending($image, true); imagealphablending($suv belgisi, rost);

Nihoyat parametrlar yordamida yangi rasm yaratamiz:

// yangi rasm tasvir nusxasini yarating ($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height); imagejpeg($rasm);

O'zingizdan keyin tozalash muhim:

// xotirani bo'shatish imagedestroy($image); imagedestroy($suv belgisi);

Moviy belgining shaffofligini sozlash uchun siz Photoshop-dan foydalanishingiz mumkin.

Hammasi nazariya bilan. Keling, bilimlarimizni haqiqiy loyihada qo'llaymiz. Bularning barchasi faylga saqlanishi kerak. Masalan, watermark.php deb ataladi

Sarlavha("kontent turi: rasm/jpeg"); // GET $image = $_GET["image"] orqali rasm nomini oling; // suv belgisi yaratish $watermark = imagecreatefrompng("watermark.png"); // moybo'yoqning balandligi va kengligini oling $watermark_width = imagesx($watermark); $watermark_height = tasviriy ($suv belgisi); // original rasmdan jpg yaratish $image_path = "/path/to/image/papka/" . $tasvir; $image = imagecreatefromjpeg($image_path); //biror narsa noto'g'ri ketsa if ($image === false) ( return false; ) $size = getimagesize($image_path); // rasmga moybo'yoqli qo'ying $dest_x = $size - $watermark_width - 5; $dest_y = $size - $watermark_height - 5; imagealphablending($image, true); imagealphablending($suv belgisi, rost); // yangi rasm tasvir nusxasini yarating ($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height); imagejpeg($rasm); // xotirani bo'shatish imagedestroy($image); imagedestroy($suv belgisi);

Endi asl tasvirni o'zgartirmasdan moybo'yoqli fotosuratni ko'rsatish uchun quyidagi koddan foydalaning.

Ba'zi hollarda, saytingizga joylashtirgan rasmlarga moybo'yoqli belgilar qo'shish ularni qandaydir tarzda o'g'irlikdan himoya qilishning yagona usuli hisoblanadi. Bundan tashqari, ular bunday suv belgilari qo'shimcha trafikni jalb qilishini aytishadi.

PHP yordamida rasmda moybo'yoqli yaratishning ko'plab usullari mavjud, ammo mening mijozim istalgan vaqtda suv belgisini yangisiga o'zgartirish imkonini beradigan dastur usuliga muhtoj edi.

Ma'lum bo'lishicha, bunday yechim bor.

Bu odatda asosan grafik tarkibga ega veb-saytlarni ishlab chiqadigan odamlar tomonidan qo'llaniladi.

Suv belgisi usulini tanlash

Bu tartibsizliklarni amalga oshirishdagi muammo, unumdorlik va moslashuvchanlik o'rtasida moybo'yoqni qanday qo'llashni tanlashdir. Hammaga mos keladigan ideal yechim yo'q. Shuning uchun ko'plab ilovalar mavjud.

Mening holatimda, mijoz istalgan vaqtda va uning o'rniga rebrend qilish huquqini o'zida saqlab qoladi "Shoxlar va tuyoqlar" yozish "Tuyoqlar va shoxlar". Siz tanlagan moybo'yoqli usul ham bunga toqat qilishi kerak.

Bu erda tasvirlangan moybo'yoqli texnologiyaning mohiyati har safar tasvir yuklanganda aynan shu belgini qo'shishdir. Ha, bu usul ishlashga sezilarli ta'sir ko'rsatishi mumkin bo'lgan bir qator cheklovlarni o'z ichiga oladi, lekin ular aytganidek, mijoz har doim to'g'ri va shuning uchun ular bo'lsa. vazifa suv belgisini dinamik ravishda qo'llashni talab qiladi, keyin aynan shunday qilish kerak.

Agar kimdir osonroq yo'li bo'lsa, sharhlaringizni qoldiring. Eshitish qiziqarli bo'ladi.

Ba'zi kodlarni taqdim etishdan oldin, men afzalliklarni tavsiflashni, shuningdek, ishlaydigan misolni keltirmoqchiman.

Taroziga soling:

  • suv belgisini kuniga kamida 500 marta o'zgartirishingiz mumkin;
  • har qanday CMS-da joylashtirilishi mumkin (u hech qanday tarzda bog'lanmagan).

Kamchiliklari:

  • hosting ishlashiga bog'liq (agar sizda juda ko'p tasvirlar bo'lsa yoki ular yuqori aniqlikda bo'lsa, bu serverga sezilarli yuk olib kelishi mumkin);
  • qiziquvchan aql hali ham moybo'yoqni olib tashlashi mumkin.

Xulosa: suv belgilari bilan oz sonli rasmlarni joylashtirish uchun bu usul juda mos keladi, lekin agar siz fotogalereya ochmoqchi bo'lsangiz, unda kamroq yuklangan narsalarni qidirganingiz ma'qul.

Misol

PHP yordamida suv belgisini amalga oshirish

Va'da qilinganidek, buning uchun hech qanday maxsus bilimga ega bo'lishingiz shart emas, sizga kerak:

  1. arxivda joylashgan fayl va uni saytingizning asosiy katalogiga joylashtiring;
  2. Biz moybo'yoq sifatida ishlaydigan rasmni saytning asosiy katalogiga joylashtiramiz va unga nom beramiz (mening holimda bu oq cho'tka zarbasi, shuning uchun havola brauzeringiz fonida ko'rinmasligi mumkin). Rasm PNG bo'lishi kerak, chunki u shaffof qatlamga ega. Agar siz GIF dan foydalanmoqchi bo'lsangiz, faylni tahrirlashingiz kerak image.php;
  3. rasmni moybo'yoqli ko'rsatmoqchi bo'lgan joyga kodni qo'ying:

Ana xolos. Hamma xursand, siz ham, mijoz ham.