Vă asumați un risc mare atunci când vă publicați imaginile și videoclipurile pe Internet, deoarece materialele dvs. pot fi copiate cu ușurință în sute de alte resurse. Nu ar fi foarte tare să găsești poza ta pentru o știre, de exemplu, la care ai lucrat din greu, pe un alt site fără a indica sursa, adică site-ul tău, nu-i așa? Ca să spunem ușor, te vei supăra, iar dacă nu era o simplă poză pentru știri, ci o treabă complexă în Photoshop, să spui că vei fi supărat înseamnă să nu spui nimic! Deci, ce puteți face pentru a vă proteja grafica?

Pentru a proteja drepturile de autor ale imaginilor sau videoclipurilor de pe Internet, un filigran digital sau un filigran digital este de obicei folosit pentru comoditate. Atașați o semnătură digitală la fiecare imagine încărcată pentru a o proteja. CEZ-ul poate fi sigla site-ului sau companiei dvs., plasată frumos și estetic pe imaginile încărcate.

Să creăm mai întâi un fișier care conține setările necesare sub formă de constante - /config.php:

Define("WATERMARK_OVERLAY_IMAGE", "/develop/images/watermark.png"); // Calea către Sala centrală de expoziții define("WATERMARK_OUTPUT_QUALITY", 100); // Calitatea imaginii rezultate din înregistrarea video digitală. Amintiți-vă că calitatea afectează în mod direct dimensiunea fișierului. define("ÎNCĂRCĂT_IMAGE_DESTINATION", "/dezvoltare/folder1/"); // Calea către locația imaginilor încărcate originale define("WATERMARK_IMAGE_DESTINATION", "/develop/folder2/"); // Calea către imagini cu formă de undă digitală suprapusă

Să colectăm fișierele create mai sus în fișierul care execută descărcarea /upload.php

Include("config.php"); include("functions.php"); $rezultat = ImageUpload($_FILES["userfile"]["tmp_name"], $_FILES["userfile"]["nume"]); if ($rezultat === false)( echo „Descărcarea a eșuat!”; )

De exemplu, dacă imaginea încărcată a fost:

Apoi, după descărcarea și aplicarea unui filigran, veți obține următoarea imagine:

În acest exemplu, imaginea descărcată este salvată într-un folder, iar imaginea pe care a fost suprapus filigranul digital într-un altul, astfel încât să aveți întotdeauna acces la imaginile originale, dar, bineînțeles, merită să postați imagini din digital. expoziție pe site.

(178,4 KiB, 989 accesări)

Dacă doriți să adăugați un filigran la o fotografie fără să vă deranjați cu editorii de imagini sau să îl adăugați în timp ce încărcați fotografii pe server, atunci acest tutorial este pentru dvs.

În acest tutorial, vă voi arăta cum să adăugați un filigran la o imagine din mers fără a schimba de fapt imaginea originală. În primul rând, veți avea nevoie de o imagine pe care să o utilizați ca filigran.

Apoi formăm antetul fișierului:

// această linie va spune browserului că trecem un antet de imagine jpg ("content-type: image/jpeg");

Apoi generăm o imagine png și obținem dimensiunile acesteia:

// creează un filigran în format png $watermark = imagecreatefrompng("watermark.png"); // obține lățimea și înălțimea $watermark_width = imagesx($watermark); $watermark_height = imagesy($watermark);

La fel vom face și cu imaginea originală, dar numai în format jpg. Acest lucru este obișnuit pentru fotografiile care sunt încărcate printr-un formular. Procedăm astfel:

// crearea unei imagini jpg $image_path = "original.jpg"; $imagine = imagecreatefromjpeg($image_path); // obțineți dimensiunea imaginii $size = getimagesize($image_path);

Acum trebuie să plasăm un filigran pe imagine:

// plasează un filigran în dreapta jos. Indentare 5px $dest_x = $size - $watermark_width - 5; $dest_y = $size - $watermark_height - 5;

În continuare, să setăm opțiunile de amestecare pentru ambele imagini:

Imagealphablending($imagine, adevărat); imagealphablending($filigran, adevărat);

În cele din urmă, creăm o nouă imagine folosind parametrii:

// creează o nouă imagine imagecopy($imagine, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height); imaginejpeg($imagine);

Este important să te cureți după tine:

// eliberez memorie imagedestroy($image); imagedestroy($filigran);

Puteți utiliza Photoshop pentru a regla transparența filigranului.

Asta e tot cu teorie. Acum să aplicăm cunoștințele noastre într-un proiect real. Toate acestea trebuie salvate într-un fișier. De exemplu, numit watermark.php

Antet ("content-type: image/jpeg"); // obțineți numele imaginii prin GET $image = $_GET["imagine"]; // creează un filigran $watermark = imagecreatefrompng("watermark.png"); // obțineți înălțimea și lățimea filigranului $watermark_width = imagesx($watermark); $watermark_height = imagesy($watermark); // creează un jpg din imaginea originală $image_path = "/path/to/image/folder/" . $imagine; $imagine = imagecreatefromjpeg($image_path); //dacă ceva nu merge bine dacă ($image === false) ( return false; ) $size = getimagesize($image_path); // plasează un filigran pe imagine $dest_x = $size - $watermark_width - 5; $dest_y = $size - $watermark_height - 5; imagealphablending($imagine, adevărat); imagealphablending($filigran, adevărat); // creează o nouă imagine imagecopy($imagine, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height); imaginejpeg($imagine); // eliberez memorie imagedestroy($image); imagedestroy($filigran);

Acum, pentru a afișa o fotografie cu filigran fără a schimba imaginea originală, utilizați următorul cod.

Există un număr mare de imagini pe Internet, care sunt de obicei încărcate de proprietarii de site-uri sau utilizatorii site-ului. În funcție de relevanța sa, imaginea poate migra de la un site la altul. Ca să nu mai vorbim de drepturile de autor, nu oricărui proprietar al site-ului i-ar plăcea faptul că imaginile de pe site-ul său sunt copiate pe alte resurse. Ca mijloc de combatere a copierii banale a imaginilor site-ului, a fost inventat aplicarea filigranelor imaginilor, indicând faptul că imaginea aparține unei anumite resurse. Acest lucru poate fi valabil mai ales pentru site-urile care au un număr mare de imagini unice.

Să ne uităm la un exemplu de cod care demonstrează aplicarea unui filigran imaginilor descărcate.

Deci, setările principale sunt conținute sub formă de constante și sunt pe primul loc în cod:

// calea către imaginea filigranului define("WATERMARK_OVERLAY_IMAGE", "/lab/watermark/watermark.png"); // Compresie, interval 0-100 (afectează calitatea imaginii) define("WATERMARK_OUTPUT_QUALITY", 100); // folderul cu imaginile sursă define("UPLOADED_IMAGE_DESTINATION", "/lab/watermark/upload/src/"); // folderul cu imagini procesate define("WATERMARK_IMAGE_DESTINATION", "/lab/watermark/upload/");

Pe pagină vom plasa un formular de încărcare a imaginii, cu care imaginile vor fi trimise către server.
Cod formular:

Selectați fișierul imagine:
Imagine originală
" style="max-width: 300px;" />
Imagine cu filigran
" style="max-width: 300px;" />

Ei bine, acum cel mai important lucru sunt funcțiile pentru procesarea imaginilor. Aceste funcții trebuie plasate înainte de afișarea formularului pe pagină.

Două funcții cheie, cu una, imaginea este încărcată pe server, cu cealaltă, se aplică un filigran. Poate că comentariile la funcții sunt descrise mai detaliat și ar fi de prisos să scriem la fel și aici.

Dacă doriți să adăugați un filigran la o fotografie fără să vă deranjați cu editorii de imagini sau să îl adăugați în timp ce încărcați fotografii pe server, atunci acest tutorial este pentru dvs.

În acest tutorial, vă voi arăta cum să adăugați un filigran la o imagine din mers fără a schimba de fapt imaginea originală. În primul rând, veți avea nevoie de o imagine pe care să o utilizați ca filigran.

Apoi formăm antetul fișierului:

// această linie va spune browserului că trecem un antet de imagine jpg ("content-type: image/jpeg");

Apoi generăm o imagine png și obținem dimensiunile acesteia:

// creează un filigran în format png $watermark = imagecreatefrompng("watermark.png"); // obține lățimea și înălțimea $watermark_width = imagesx($watermark); $watermark_height = imagesy($watermark);

La fel vom face și cu imaginea originală, dar numai în format jpg. Acest lucru este obișnuit pentru fotografiile care sunt încărcate printr-un formular. Procedăm astfel:

// crearea unei imagini jpg $image_path = "original.jpg"; $imagine = imagecreatefromjpeg($image_path); // obțineți dimensiunea imaginii $size = getimagesize($image_path);

Acum trebuie să plasăm un filigran pe imagine:

// plasează un filigran în dreapta jos. Indentare 5px $dest_x = $size - $watermark_width - 5; $dest_y = $size - $watermark_height - 5;

În continuare, să setăm opțiunile de amestecare pentru ambele imagini:

Imagealphablending($imagine, adevărat); imagealphablending($filigran, adevărat);

În cele din urmă, creăm o nouă imagine folosind parametrii:

// creează o nouă imagine imagecopy($imagine, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height); imaginejpeg($imagine);

Este important să te cureți după tine:

// eliberez memorie imagedestroy($image); imagedestroy($filigran);

Puteți utiliza Photoshop pentru a regla transparența filigranului.

Asta e tot cu teorie. Acum să aplicăm cunoștințele noastre într-un proiect real. Toate acestea trebuie salvate într-un fișier. De exemplu, numit watermark.php

Antet ("content-type: image/jpeg"); // obțineți numele imaginii prin GET $image = $_GET["imagine"]; // creează un filigran $watermark = imagecreatefrompng("watermark.png"); // obțineți înălțimea și lățimea filigranului $watermark_width = imagesx($watermark); $watermark_height = imagesy($watermark); // creează un jpg din imaginea originală $image_path = "/path/to/image/folder/" . $imagine; $imagine = imagecreatefromjpeg($image_path); //dacă ceva nu merge bine dacă ($image === false) ( return false; ) $size = getimagesize($image_path); // plasează un filigran pe imagine $dest_x = $size - $watermark_width - 5; $dest_y = $size - $watermark_height - 5; imagealphablending($imagine, adevărat); imagealphablending($filigran, adevărat); // creează o nouă imagine imagecopy($imagine, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height); imaginejpeg($imagine); // eliberez memorie imagedestroy($image); imagedestroy($filigran);

Acum, pentru a afișa o fotografie cu filigran fără a schimba imaginea originală, utilizați următorul cod.

În unele cazuri, adăugarea de filigrane la imaginile pe care le postați pe site-ul dvs. este singura modalitate de a le proteja cumva de furt. În plus, ei spun că astfel de filigrane atrag trafic suplimentar.

Există multe modalități de a crea un filigran pe o imagine folosind PHP, dar clientul meu avea nevoie de o metodă de aplicare care să-i permită să schimbe filigranul cu unul nou în orice moment.

După cum se dovedește, există o astfel de soluție.

Acesta este de obicei folosit de persoanele care dezvoltă site-uri web cu conținut în mare parte grafic.

Selectarea unei metode de filigran

Problema cu implementarea acestei mizerie este alegerea modului de aplicare a filigranului între performanță și flexibilitate. Pur și simplu nu există o soluție ideală care să se potrivească tuturor. Acesta este motivul pentru care există multe implementări.

În cazul meu, clientul își rezervă dreptul de a rebranda în orice moment și în schimb „Coarne și copite” scrie „Copite și coarne”. Metoda de watermarking pe care o alegeți ar trebui să tolereze și acest lucru.

Esența tehnologiei de filigranare descrisă aici este de a adăuga chiar acest semn de fiecare dată când o imagine este încărcată. Da, această metodă are o serie de limitări care pot afecta semnificativ performanța, dar, după cum se spune, clientul are întotdeauna dreptate și, prin urmare, dacă acestea. sarcina necesită aplicarea dinamică a unui filigran, atunci acesta este exact ceea ce trebuie făcut.

Dacă cineva are o cale mai ușoară, atunci sunteți binevenit să comentați. Va fi interesant de ascultat.

Înainte de a prezenta un cod, aș dori să descriu avantajele, precum și să dau un exemplu de lucru.

Pro:

  • puteți schimba filigranul de cel puțin 500 de ori pe zi;
  • poate fi implementat în orice CMS (nu este legat în niciun fel de acesta).

Minusuri:

  • depinde de performanta gazduirii (daca ai multe imagini sau sunt de inalta rezolutie, asta poate pune o incarcare semnificativa pe server);
  • o minte curioasă va putea în continuare să-ți îndepărteze filigranul.

Concluzii: pentru postarea unui număr mic de imagini cu filigran, această metodă este perfectă, dar dacă aveți de gând să deschideți o galerie foto, atunci ar fi mai bine să căutați ceva mai puțin încărcat.

Exemplu

Implementarea unui filigran folosind PHP

După cum am promis, nu trebuie să aveți cunoștințe speciale pentru aceasta, trebuie să:

  1. fișier, care se află în arhivă și plasați-l în directorul rădăcină al site-ului dvs.;
  2. Am plasat imaginea care va acționa ca un filigran în directorul rădăcină al site-ului și o denumim (în cazul meu este o pensulă albă, deci linkul poate să nu fie vizibil pe fundalul browserului dvs.). Imaginea trebuie să fie PNG, deoarece are un strat transparent. Dacă doriți să utilizați GIF, trebuie să editați fișierul imagine.php;
  3. în locul în care doriți să afișați imaginea cu filigran, plasați codul:

Asta e tot. Toată lumea este fericită, atât tu, cât și clientul.