Du tar en stor risiko når du publiserer bildene og videoene dine på Internett, siden innholdet ditt enkelt kan kopieres til hundrevis av andre nettsteder. Det ville ikke være bra å finne bildet ditt for nyhetene, for eksempel som du jobbet hardt med, på et annet nettsted uten å angi kilden, det vil si nettstedet ditt, ikke sant? For å si det mildt, vil du bli opprørt, og hvis det ikke var et enkelt bilde for nyhetene, men et komplekst arbeid i Photoshop, er det å si at du er sint å si ingenting! Så hva kan du gjøre for å beskytte grafikken din?

For å beskytte opphavsretten til bilder eller videoer på Internett, brukes vanligvis et digitalt vannmerke eller digitalt vannmerke for enkelhets skyld. Fest et vannmerke til hvert opplastede bilde for å sikre det. CEH kan være logoen til nettstedet eller firmaet ditt, vakkert og estetisk plassert på de opplastede bildene.

La oss først lage en fil som inneholder de nødvendige innstillingene i form av konstanter - /config.php:

Define("WATERMARK_OVERLAY_IMAGE", "/develop/images/watermark.png"); // Sti til vannmerket ditt define("WATERMARK_OUTPUT_QUALITY", 100); // Kvaliteten på det mottatte bildet fra vannmerket. Husk at kvaliteten direkte påvirker filstørrelsen. define("UPLOADED_IMAGE_DESTINATION", "/develop/folder1/"); // Banen til plasseringen av de opprinnelige innlastede bildene definere("WATERMARK_IMAGE_DESTINATION", "/develop/folder2/"); // Sti til bilder med overlagt vannmerke

La oss samle filene opprettet ovenfor i filen som utfører nedlastingen /upload.php

include("config.php"); include("functions.php"); $result = ImageUpload($_FILES["brukerfil"]["tmp_name"], $_FILES["brukerfil"]["navn"]); if ($result === usant)( ekko "Opplastning mislyktes!"; )

For eksempel, hvis bildet som ble lastet var:

Etter å ha lastet inn og påført et vannmerke, får du følgende bilde:

I dette eksemplet lagres det opplastede bildet i én mappe, og bildet som har blitt digitalt vannmerket i en annen, slik at du alltid har tilgang til originalbildene, men du bør selvfølgelig plassere bilder fra CEH på siden .

(178,4 KiB, 989 treff)

Hvis du vil legge til et vannmerke til et bilde uten å bry deg med bilderedigering eller legge det til mens du laster opp bilder til serveren, så er denne leksjonen for deg.

I denne opplæringen skal jeg vise deg hvordan du legger til et vannmerke til et bilde uten å faktisk endre det originale bildet. Først av alt trenger du et bilde som du vil bruke som vannmerke.

Deretter danner vi filoverskriften:

// denne linjen vil fortelle nettleseren at vi sender en jpg-bildehode ("content-type: image/jpeg");

Deretter danner vi et png-bilde og får dimensjonene:

// lag et png-vannmerke $watermark = imagecreatefrompng("watermark.png"); // få bredde og høyde $watermark_width = imagesx($watermark); $watermark_height = imagesy($watermark);

Vi vil gjøre det samme med originalbildet, men kun i jpg-format. Dette er vanlig for bilder som lastes opp via et skjema. Vi opptrer som følger:

// lag et jpg-bilde $image_path = "original.jpg"; $image = imagecreatefromjpeg($image_path); // få bildedimensjon $størrelse = getimagesize($bildebane);

Nå må vi plassere et vannmerke på bildet:

// sett vannmerket nederst til høyre. 5px padding $dest_x = $size - $watermark_width - 5; $dest_y = $size - $watermark_height - 5;

Deretter setter vi blandingsalternativene for begge bildene:

imagealphablending($image, true); imagealphablending($vannmerke, sant);

Til slutt lager vi et nytt bilde ved å bruke parametrene:

// lag en ny bildekopi($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height); imagejpeg($bilde);

Det er viktig å ta med seg:

// ledig minne imagedestroy($image); imagedestroy($vannmerke);

Du kan bruke Photoshop til å justere gjennomsiktigheten til vannmerket.

Det er alt med teori. Nå skal vi bruke kunnskapen vår i et reelt prosjekt. Alt dette må lagres i en fil. For eksempel kalt watermark.php

Header("innholdstype: bilde/jpeg"); // få bildenavn via GET $image = $_GET["image"]; // lag et vannmerke $watermark = imagecreatefrompng("watermark.png"); // få vannmerke høyde og bredde $watermark_width = imagesx($watermark); $watermark_height = imagesy($watermark); // lag jpg fra originalbildet $image_path = "/bane/til/bilde/mappe/" . $image; $image = imagecreatefromjpeg($image_path); //hvis noe går galt if ($image === false) ( return false; ) $size = getimagesize($image_path); // sett et vannmerke på bildet $dest_x = $size - $watermark_width - 5; $dest_y = $size - $watermark_height - 5; imagealphablending($image, true); imagealphablending($vannmerke, sant); // lag en ny bildekopi($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height); imagejpeg($bilde); // ledig minne imagedestroy($image); imagedestroy($vannmerke);

Nå, for å vise et bilde som vil ha et vannmerke uten å endre originalbildet, bruk følgende kode.

Det er et stort antall bilder på Internett, som som regel lastes opp av nettstedseiere eller nettstedsbrukere. Avhengig av relevansen kan bildet migrere fra nettsted til nettsted. For ikke å snakke om opphavsrett, kanskje ikke alle nettstedeiere liker det faktum at bilder fra nettstedet hans kopieres til andre ressurser. Som et middel for å bekjempe banal kopiering av nettstedsbilder, ble det oppfunnet for å påføre vannmerker på bilder, noe som indikerer at bildet tilhører en bestemt ressurs. Dette kan spesielt gjelde for nettsteder som har et stort antall unike bilder.

La oss se på et kodeeksempel som demonstrerer påføringen av et vannmerke på opplastede bilder.

Så, hovedinnstillingene er inneholdt i form av konstanter, og de går først i koden:

// vannmerkebildebane define("WATERMARK_OVERLAY_IMAGE", "/lab/watermark/watermark.png"); // Komprimering, område 0-100 (påvirker bildekvalitet) define("WATERMARK_OUTPUT_QUALITY", 100); // kildebildemappen define("UPLOADED_IMAGE_DESTINATION", "/lab/watermark/upload/src/"); // mappe med behandlede bilder define("WATERMARK_IMAGE_DESTINATION", "/lab/watermark/upload/");

På siden vil vi legge ut et bildeopplastingsskjema som skal brukes til å sende bilder til serveren.
Skjemakode:

Velg en bildefil:
originalbilde
"style="max-width: 300px;" />
Bilde med vannmerke
"style="max-width: 300px;" />

Vel, nå er det viktigste funksjonene for bildebehandling. Plasser disse funksjonene før du viser skjemaet på siden.

To nøkkelfunksjoner, ved hjelp av den ene lastes bildet opp til serveren, ved hjelp av den andre legges et vannmerke over hverandre. Kanskje er kommentarene til funksjonene beskrevet mer enn detaljert, og det ville være overflødig å skrive det samme her.

Hvis du vil legge til et vannmerke til et bilde uten å bry deg med bilderedigering eller legge det til mens du laster opp bilder til serveren, så er denne leksjonen for deg.

I denne opplæringen skal jeg vise deg hvordan du legger til et vannmerke til et bilde uten å faktisk endre det originale bildet. Først av alt trenger du et bilde som du vil bruke som vannmerke.

Deretter danner vi filoverskriften:

// denne linjen vil fortelle nettleseren at vi sender en jpg-bildehode ("content-type: image/jpeg");

Deretter danner vi et png-bilde og får dimensjonene:

// lag et png-vannmerke $watermark = imagecreatefrompng("watermark.png"); // få bredde og høyde $watermark_width = imagesx($watermark); $watermark_height = imagesy($watermark);

Vi vil gjøre det samme med originalbildet, men kun i jpg-format. Dette er vanlig for bilder som lastes opp via et skjema. Vi opptrer som følger:

// lag et jpg-bilde $image_path = "original.jpg"; $image = imagecreatefromjpeg($image_path); // få bildedimensjon $størrelse = getimagesize($bildebane);

Nå må vi plassere et vannmerke på bildet:

// sett vannmerket nederst til høyre. 5px padding $dest_x = $size - $watermark_width - 5; $dest_y = $size - $watermark_height - 5;

Deretter setter vi blandingsalternativene for begge bildene:

imagealphablending($image, true); imagealphablending($vannmerke, sant);

Til slutt lager vi et nytt bilde ved å bruke parametrene:

// lag en ny bildekopi($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height); imagejpeg($bilde);

Det er viktig å ta med seg:

// ledig minne imagedestroy($image); imagedestroy($vannmerke);

Du kan bruke Photoshop til å justere gjennomsiktigheten til vannmerket.

Det er alt med teori. Nå skal vi bruke kunnskapen vår i et reelt prosjekt. Alt dette må lagres i en fil. For eksempel kalt watermark.php

Header("innholdstype: bilde/jpeg"); // få bildenavn via GET $image = $_GET["image"]; // lag et vannmerke $watermark = imagecreatefrompng("watermark.png"); // få vannmerke høyde og bredde $watermark_width = imagesx($watermark); $watermark_height = imagesy($watermark); // lag jpg fra originalbildet $image_path = "/bane/til/bilde/mappe/" . $image; $image = imagecreatefromjpeg($image_path); //hvis noe går galt if ($image === false) ( return false; ) $size = getimagesize($image_path); // sett et vannmerke på bildet $dest_x = $size - $watermark_width - 5; $dest_y = $size - $watermark_height - 5; imagealphablending($image, true); imagealphablending($vannmerke, sant); // lag en ny bildekopi($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height); imagejpeg($bilde); // ledig minne imagedestroy($image); imagedestroy($vannmerke);

Nå, for å vise et bilde som vil ha et vannmerke uten å endre originalbildet, bruk følgende kode.

I noen tilfeller er det å legge til et vannmerke til bildene du plasserer på nettstedet ditt den eneste måten å beskytte dem mot tyveri. I tillegg sier de at slike vannmerker tiltrekker seg ekstra trafikk.

Det er mange måter å vannmerke et bilde på ved hjelp av PHP, men klienten min trengte en applikasjonsmetode som ville tillate deg å endre vannmerket til et nytt når som helst.

Som det viser seg, finnes det en slik løsning.

Dette brukes vanligvis av folk som utvikler nettsteder med stort sett grafisk innhold.

Velge en vannmerkemetode

Problemet med å implementere all denne skam ligger i valget av hvordan man bruker et vannmerke mellom ytelse og fleksibilitet. En ideell løsning som passer alle finnes rett og slett ikke. Derfor er det mange implementeringer.

I mitt tilfelle forbeholder kunden seg retten til å rebrande når som helst og i stedet for "Horn og hover" skrive "Høver og horn". Den valgte metoden for vannmerking må også tåle dette.

Essensen av vannmerketeknologien beskrevet her er å legge til det samme merket hver gang et bilde lastes inn. Ja, denne metoden har en rekke begrensninger som kan påvirke ytelsen betydelig, men som de sier, kunden har alltid rett, og derfor hvis de. Siden oppgaven krever dynamisk påføring av et vannmerke, er dette akkurat det du må gjøre.

Hvis noen har en enklere måte, så er du velkommen i kommentarfeltet. Det skal bli interessant å lytte.

Før jeg tar med litt kode, vil jeg gjerne beskrive fordelene, samt gi et fungerende eksempel.

Fordeler:

  • du kan endre vannmerket minst 500 ganger om dagen;
  • kan distribueres i et hvilket som helst CMS (det er ikke knyttet til det på noen måte).

Minuser:

  • avhenger av ytelsen til hostingen (hvis du har mange bilder eller de har høy oppløsning, kan dette legge en betydelig belastning på serveren);
  • et nysgjerrig sinn kan fortsatt fjerne vannmerket ditt.

Konklusjoner: for å få plass til et lite antall bilder med vannmerker, er denne metoden den beste, men hvis du skal åpne et bildegalleri, vil det være mer riktig å se etter noe mindre høybelastning.

Eksempel

Implementere et vannmerke med PHP

Som lovet, for dette trenger du ikke ha noen spesiell kunnskap, du trenger:

  1. fil, som er i arkivet, og plasser den i rotkatalogen på nettstedet ditt;
  2. vi plasserer bildet som vil fungere som et vannmerke i rotkatalogen til nettstedet og navngir det (i mitt tilfelle er det et hvitt penselstrøk, så det kan ikke skjelnes mot bakgrunnen til nettleseren din når du følger lenken). Bildet må være nøyaktig PNG , siden det har et gjennomsiktig lag. Hvis du vil bruke GIF, må du redigere filen image.php;
  3. på stedet der du vil vise bildet med et vannmerke, legg inn koden:

Det er alt. Alle er fornøyde, både du og kunden.