Verklein en watermerk php. Voeg een dynamisch watermerk toe aan een afbeelding met behulp van PHP. Een watermerk implementeren met behulp van PHP

Een van de interessante dingen die je kunt doen met de PHP GD grafische bibliotheek is een klasse die watermerken op een afbeelding plaatst. In een notendop is watermerken een technologie om digitale afbeeldingen te beschermen tegen ongeoorloofd gebruik door er watermerken of handtekeningen aan toe te voegen. Als gevolg hiervan kan (en wordt dit in het algemeen) gebruikt om de eigenaar van het auteursrecht op een afbeelding te bepalen. Dus laten we verder gaan.

Invoering

In deze fase van zijn ontwikkeling biedt PHP programmeurs een breed scala aan functies voor het dynamisch genereren van afbeeldingen en het werken ermee. In dit artikel laat ik je een techniek zien voor het maken van een klasse die watermerken op dezelfde afbeeldingen plaatst. Deze klasse werkt met twee afbeeldingen: het origineel en het watermerk. Als toevoeging is er een derde parameter geïntroduceerd: onze klasse zal een alpha-variabele bevatten. Hierdoor kunnen we een alfakanaal gebruiken voor ons watermerk.

Ter referentie

alfakanaal: deel van een afbeelding dat informatie opslaat over de transparantie van afzonderlijke delen van de afbeelding, terwijl kleurkanalen informatie opslaan over de kleur van de afbeelding. In grafische editors wordt het gebruikt om een ​​bepaald deel van de afbeelding te maskeren (beschermen tegen bewerken). In sommige toepassingen worden ze een transparant masker genoemd.

De informatie in het alfakanaal vertegenwoordigt meestal gemarkeerde gebieden: een vorm of rangschikking van gekleurde gebieden. Door een alfakanaal in een afbeelding op te slaan, wordt de bestandsgrootte met 1/3 vergroot. RGB-afbeeldingen kunnen maximaal 24 alfakanalen hebben. Bitmaps en geïndexeerde afbeeldingen kunnen geen alfakanalen bevatten.

Deel één - Basis

Voordat we beginnen met het schrijven van de klasse zelf, kijken we naar de functies die erin zullen worden gebruikt. Hier is hun lijst:

# retourneert de breedte en hoogte van de afbeelding imagesx() imagesy() # creëert een nieuwe afbeelding true-color imagecreatetruecolor # retourneert een associatieve array met de toetsen rood, groen en blauw (+ alfakanaal) met daarin de corresponderende waarden voor de gespecificeerde kleurindex imagecolorsforindex() # retourneert de index van de kleur van een pixel op een gespecificeerde locatie in de afbeelding imagecolorat() # tekent een enkele pixel van de gegeven kleur imagesetpixel() # retourneert index de index van de kleur in het palet van de afbeelding, de identificatie van de kleur (samengesteld uit de RGB-componenten) en de index van de paletkleur van de afbeelding die "het dichtst" bij RGB ligt -waarde dienovereenkomstig (deze gegevens zijn nodig voor de functie imagesetpixel()) imagecolorexact() imagecolorallocate( ) afbeeldingkleurdichtste()

Zoals je kunt zien, heeft php voldoende functies om met afbeeldingen te werken. Ook al is het doel van sommige ervan in theorie niet helemaal duidelijk, in de praktijk is alles veel eenvoudiger. Om erachter te komen hoe we ermee kunnen werken, zullen we ze daarom in onze klas toepassen.

Het pad naar het doel kiezen

Nu we al een besluit hebben genomen over het doel van ons ‘miniproject’, gaan we een beetje teruggaan en praten over manieren om het te implementeren.

Om te beginnen ontvangt onze applicatie twee afbeeldingen: de originele afbeelding en het watermerk zelf. Vervolgens moeten we de afmetingen van deze afbeeldingen bepalen (breedte-breedte en hoogte-hoogte). We hebben deze gegevens nodig om het watermerk in het midden van de afbeelding te plaatsen (gebaseerd op de veronderstelling dat de grootte van het watermerk kleiner zal zijn dan de afbeelding zelf).

Vervolgens moet u ons watermerk op de originele afbeelding aanbrengen. Om dit te doen, moeten we de kleuren van de (wiskundig) overlappende afbeeldingen toevoegen om een ​​derde te verkrijgen.

En uiteindelijk zullen we de resulterende afbeelding in de browser moeten weergeven. In dit geval wordt de afbeelding rechtstreeks geopend vanuit de bron die is opgegeven in de tag " "

Ik denk dat de theorie al voldoende is: de belangrijkste punten ervan worden voldoende gedetailleerd onthuld. Laten we nu verder gaan met het schrijven van het script.

Deel twee: een script schrijven

Laten we beginnen met het eenvoudigste: schrijf een klasse die een bestand met een watermerk maakt. Laten we het "watermark" noemen en de code ervan in het bestand "api.watermark.php" schrijven. Het ‘skelet’ van de klasse zal drie functies hebben:

De volgende stap is het schrijven van code voor de klassefuncties "watermerk". We vullen het bestand "api.watermark.php" aan met de volgende regels code:

# functie die twee bronafbeeldingen samenvoegt in één functie create_watermark($main_img_obj, $watermark_img_obj, $alpha_level = 100) (# # converteert de transparantiewaarde van het alfakanaal van % naar tientallen $alpha_level/= 100; # bereken de afmetingen van de afbeelding (breedte en hoogte) $main_img_obj_w = afbeeldingenx($main_img_obj); $main_img_obj_h = main_img_obj_w = afbeeldingenx($watermark_img_obj_h = afbeeldingeny($watermark_img_obj); main_img_obj_max_x=ceil(($main_img_obj_w/2)+($watermark_img_obj_w/2)); $main_img_obj_max_y=ceil(($main_img_obj_h/2)+($watermark_img_obj_h/2)); # een nieuwe afbeelding maken $return_img = imagecreatetruecolor ($main_img_obj_w, $main_img_obj_h); ) # einde van functie create_watermark()

Laten we nu de functie create_watermark() eens nader bekijken.

Allereerst geven we drie parameters door:

# de originele afbeelding die van een watermerk moet worden voorzien $main_img_obj # het watermerk zelf moet een alfakanaal bevatten $watermark_img_obj # de transparantiewaarde van het alfakanaal van het watermerk, (0-100, standaard = 100) $alpha_level

(Het is belangrijk op te merken dat onze functie afbeeldingen accepteert als objecten, niet alleen paden ernaartoe - maar daarover later meer)

De volgende stap is het maken van een nieuwe afbeelding in ware kleuren met dezelfde afmetingen als de originele afbeelding. Deze afbeelding (variabele $return_img) zal worden gebruikt om informatie uit de originele afbeeldingen (tekening en watermerk) te combineren.

Maar daarvoor moet je nog steeds elk van de twee oorspronkelijke afbeeldingen 'doornemen' en ze 'samenvoegen' tot één. Het is gewoon te vroeg om dit te doen; we zijn hier nog niet klaar voor. In plaats daarvan plaatsen we een "code"-opmerking en vullen die ruimte vervolgens in met een stukje code.

Het eindresultaat is dat onze gewijzigde afbeelding wordt weergegeven op de webpagina die daarom vraagt. Laten we vervolgens eens kijken naar de resterende twee hulpfuncties.

Deel drie - Helperfuncties

Naast de create_watermark-functie bevat onze watermerkklasse nog twee functies. Laten we de broncode van de klasse voortzetten met de volgende regels:

# het middelen van twee kleuren, rekening houdend met de transparantie van de alfakanaalfunctie _get_ave_color($color_a, $color_b, $alpha_level) ( return round((($color_a*(1-$alpha_level))+($color_b*$alpha_level)) ) # retourneer de waarden van de dichtstbijzijnde RGB-componenten van de nieuwe afbeeldingsfunctie _get_image_color($im, $r, $g, $b) ( $c=imagecolorexact($im, $r, $g, $b) ); if ($c!=- 1) retourneert $c; $c=imagecolorallocate($im, $r, $g, $b); , $g, $ b);

En nu meer details. Onze eerste functie "_get_ave_color" neemt de numerieke waarden van twee kleuren en een alfakanaal op. Het retourneert hun gemiddelde waarde. We hebben deze functie nodig om de kleur te bepalen die wordt verkregen wanneer de pixels van twee afbeeldingen over elkaar heen worden gelegd.

De tweede functie "_get_image_color" splitst de afbeelding in rode (rood), groene (groen) en blauwe (blauwe) componenten (RGB-palet). Met behulp van de functies die in PHP zijn ingebouwd voor het werken met afbeeldingen (hun beschrijving stond aan het begin van het artikel), verkrijgen we de dichtstbijzijnde kleurwaarde voor de nieuwe afbeelding.

Daarnaast worden er ook nog een aantal punten gecontroleerd. Ten eerste, als het mogelijk was om de exacte waarde (variabele $c) te verkrijgen, dan wordt deze geretourneerd door de functie (retourneert $c). Anders wordt geprobeerd een kleur te selecteren met behulp van de functie imagecolorallocate(). Als dit niet helpt om het resultaat te bereiken, wordt met behulp van de functie imagecolorclosest() de dichtstbijzijnde kleurwaarde (de meest onnauwkeurige) eenvoudigweg geretourneerd.

Onze klas is bijna klaar. Het enige dat overblijft is het vervangen van de opmerking “een code” in de functie “create_watermark” door de volgende regels:

# loop door de afbeelding voor($y = 0; $y< $main_img_obj_h; $y++) { for ($x = 0; $x < $main_img_obj_w; $x++) { $return_color = NULL; # определение истинного расположения пикселя в пределах # нашего водяного знака $watermark_x = $x - $main_img_obj_min_x; $watermark_y = $y - $main_img_obj_min_y; # выбор информации о цвете для наших изображений $main_rgb = imagecolorsforindex($main_img_obj, imagecolorat($main_img_obj, $x, $y)); # если наш пиксель водяного знака непрозрачный if ($watermark_x >= 0 && $watermerk_x< $watermark_img_obj_w && $watermark_y >= 0 && $watermerk_y< $watermark_img_obj_h) { $watermark_rbg = imagecolorsforindex($watermark_img_obj, imagecolorat($watermark_img_obj, $watermark_x, $watermark_y)); # использование значения прозрачности альфа-канала $watermark_alpha = round(((127-$watermark_rbg["alpha"])/127),2); $watermark_alpha = $watermark_alpha * $alpha_level; # расчет цвета в месте наложения картинок $avg_red = $this->_get_ave_color($main_rgb["rood"], $watermark_rbg["rood"], $watermark_alpha);

$avg_green = $this->_get_ave_color($main_rgb["groen"], $watermark_rbg["groen"], $watermark_alpha);

Het eerste dat ons script doet, is de afbeelding doorkruisen met behulp van twee "for"-lussen. Tegelijkertijd worden ook de coördinaten van elke pixel van het watermerk berekend.

Vervolgens wordt voor elke pixel naar RGB-informatie gezocht. Als de huidige pixel zich niet in het snijgebied van de originele afbeelding en het watermerk bevindt, dupliceert onze klasse alleen de pixel voor de nieuwe afbeelding. Als de pixel zich in het snijpunt bevindt, moeten we de kleur ervan bepalen als resultaat van de overlay van de originele afbeelding en het watermerk.

Om de kleur van het snijpunt te bepalen, moeten we eerst de waarde van de RGB-variabele van het watermerk verkrijgen met behulp van de informatie die we hebben verkregen in de "for" -lussen. Vervolgens wordt met behulp van de functie "_get_ave_color" de gemiddelde kleurwaarde voor de nieuwe afbeelding bepaald. Vervolgens komt de functie "_get_image_color" om het kleurenschema te bepalen dat zal worden gebruikt door de functie "return_img".

Als resultaat hebben we, nadat de “for”-lussen zijn voltooid, een voltooide afbeelding met een watermerk.

Laten we nu onze klas in actie bekijken.

Deel vier: proefrit

Om te beginnen hebben we twee bestanden nodig. Laten we de eerste "watermark_test.php" noemen en de volgende code erin plaatsen:



Het doel van dit bestand is heel eenvoudig: het toont de originele (main.jpg) en de resulterende (watermark.png, met een watermerk) afbeeldingen in de browser.

Zoals je kunt zien verwijst onze tweede afbeelding (watermark.png) naar het php-bestand image.php, niet naar het afbeeldingsbestand. Deze link heeft de vorm van een GET-verzoek, waarbij de waarden van twee variabelen worden overgebracht naar het php-bestand: $main en $watermark.

Laten we het tweede bestand "image.php" noemen en de volgende code erin plaatsen:

create_watermark($main_img_obj, $watermark_img_obj, 66); # toon onze resulterende afbeelding in de browser - # maar laat hem eerst weten dat het een jpeg-bestandskop is("Content-Type: image/jpeg"); header("Inhoudsdispositie: inline; bestandsnaam=" . $_GET["src"]); imagejpeg($return_img_obj, "", 50); ?>

Nou, we hebben de finale bereikt. (ZIP, 47,6 KB)

Eigenaars van websites (forums, prikborden, enz.) worden vaak geconfronteerd met het probleem van het creëren van watermerken op alle grote afbeeldingen van de site.

Je kunt dit probleem natuurlijk oplossen door handmatig een watermerk op elke afbeelding te maken. Ten eerste kost dit echter veel tijd en ten tweede wordt het noodzakelijk om twee versies van de afbeelding op te slaan, met en zonder watermerk.

Een oplossing voor dit probleem kan zijn om dynamisch een watermerk op de afbeelding aan te brengen voordat deze naar de bezoeker van de site wordt verzonden.

Er is een oplossing voor dit probleem op internet in de vorm van twee bestanden, waarvan de inhoud hieronder wordt weergegeven.
Broncode van het ".htaccess"-bestand

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

Broncode van het bestand "_watermark.php"

250) && ($info_o > 250)) ( // Voor afbeeldingen zonder alfakanaal // De laatste parameter van de functie is de mate van dekking van het watermerk imageCopyMerge($out, $watermark, ($info_o-$info_w) /2, ($info_o -$info_w)/2, 0, 0, $info_w, $info_w, 25); // Voor afbeeldingen met een alfakanaal // In dit geval wordt de transparantie aangepast door het alfakanaal van de afbeelding zelf // imageCopy($out, $watermark, ($info_o-$info_w)/2, ($info_o-$info_w)/2, 0, 0, $info_w, $info_w ) schakelaar ($info_o) (geval 1 : imageGIF($out); geval 2: imageJPEG($out); geval 3: imagePNG($out);

afbeeldingDestroy($original);

afbeeldingDestroy($watermark);

retourneer waar; ) ?>

De oplossing komt op het volgende neer: het “.htaccess”-bestand wordt in de map met de afbeeldingsbestanden geplaatst. Daarnaast wordt op de server een map “watermerk” gemaakt, waarin zich een scriptbestand “_watermark.php” en het eigenlijke watermerkbestand “watermark.png” bevinden.

Tegelijkertijd heb ik, vergeleken met de originele versie die op internet te vinden is, kleine wijzigingen aangebracht in beide tekstbestanden.

Om dit probleem te voorkomen, raad ik aan een map "watermerk" aan te maken in de hoofdmap van de site en een ".htaccess"-bestand in de afbeeldingsmappen te plaatsen zonder dat u dit elke keer hoeft te wijzigen. In dit geval hoeven we slechts op één plek op de site wijzigingen aan te brengen om het watermerk of het script te wijzigen. In dit geval kunt u verschillende watermerken maken voor verschillende mappen met afbeeldingen door vanuit verschillende “.htaccess”-bestanden naar verschillende scripts te verwijzen, bijvoorbeeld “_watermark-1.php”, “_watermark-2.php”, enz.

Samenvattend kunnen we dus zeggen dat om watermerken op alle afbeeldingen van de site toe te passen, u het onderstaande archief moet downloaden, uitpakken, de map “watermerk” in de hoofdmap van de site moet plaatsen en het watermerkbestand moet vervangen “ watermark.png” erin met uw eigen bestand, en plaats het ".htaccess"-bestand in die sitemappen waarvan de afbeeldingen een watermerk moeten krijgen.

Hier kunt u het archief met alle benodigde bestanden downloaden

U loopt een groot risico wanneer u uw afbeeldingen en video's op internet publiceert, omdat uw materiaal gemakkelijk naar honderden andere bronnen kan worden gekopieerd. Het zou toch niet zo cool zijn om je foto voor bijvoorbeeld een nieuwsbericht, waar je hard aan hebt gewerkt, op een andere site te vinden zonder de bron te vermelden, dat wil zeggen op jouw site, toch? Op zijn zachtst gezegd zul je van streek zijn, en als het geen eenvoudige foto voor het nieuws was, maar een complexe klus in Photoshop, zeg dan dat je boos zult zijn, dan zeg je niets! Dus wat kunt u doen om uw afbeeldingen te beschermen?

Om het auteursrecht van afbeeldingen of video's op internet te beschermen, wordt voor het gemak meestal een digitaal watermerk of digitaal watermerk gebruikt. Voeg een digitale banner toe aan elke geüploade afbeelding om deze te beschermen. Het digitale expositiecentrum kan het logo van uw website of bedrijf zijn, mooi en esthetisch geplaatst op geüploade afbeeldingen.

Laten we eerst een bestand maken met de benodigde instellingen in de vorm van constanten - /config.php:

Define("WATERMARK_OVERLAY_IMAGE", "/develop/images/watermark.png"); // Pad naar uw centrale tentoonstellingshal definiëren("WATERMARK_OUTPUT_QUALITY", 100); // Kwaliteit van het resulterende beeld van digitale video-opname. Houd er rekening mee dat kwaliteit rechtstreeks van invloed is op de bestandsgrootte. definiëren("UPLOADED_IMAGE_DESTINATION", "/develop/map1/"); // Pad naar de locatie van de origineel geladen afbeeldingen definiëren("WATERMARK_IMAGE_DESTINATION", "/develop/folder2/"); // Pad naar afbeeldingen met overlappende digitale golfvorm

Laten we de hierboven gemaakte bestanden verzamelen in het bestand dat de download uitvoert /upload.php

Include("config.php"); include("functies.php"); $result = ImageUpload($_FILES["gebruikersbestand"]["tmp_name"], $_FILES["gebruikersbestand"]["naam"]); if ($result === false)( echo "Download mislukt!"; )

Als de afbeelding die wordt geladen bijvoorbeeld:

Na het downloaden en aanbrengen van een watermerk krijgt u vervolgens de volgende afbeelding:

In dit voorbeeld wordt de gedownloade afbeelding in de ene map opgeslagen en de afbeelding waarop het digitale watermerk is geplaatst in een andere map, zodat u altijd toegang heeft tot de originele afbeeldingen, maar het is uiteraard de moeite waard om afbeeldingen uit de digitale map te plaatsen. tentoonstelling op de site.

(178,4 KiB, 989 treffers)

In sommige gevallen is het toevoegen van watermerken aan de afbeeldingen die u op uw site plaatst de enige manier om ze op de een of andere manier tegen diefstal te beschermen. Bovendien zeggen ze dat dergelijke watermerken extra verkeer aantrekken.

Er zijn veel manieren om met PHP een watermerk op een afbeelding te maken, maar mijn klant had een toepassingsmethode nodig waarmee hij het watermerk op elk moment in een nieuw watermerk kon veranderen.

Het blijkt dat er een dergelijke oplossing bestaat.

Dit wordt meestal gebruikt door mensen die websites ontwikkelen met voornamelijk grafische inhoud.

Een watermerkmethode selecteren

Het probleem bij het implementeren van al deze puinhoop is de keuze hoe je het watermerk tussen prestatie en flexibiliteit wilt toepassen. Er bestaat simpelweg geen ideale oplossing die voor iedereen geschikt is. Daarom zijn er veel implementaties.

In mijn geval behoudt de klant zich het recht voor om op elk moment en in plaats daarvan een merkwijziging door te voeren “Hoorns en hoeven” schrijven “Hoeven en hoorns”. De watermerkmethode die u kiest, moet dit ook tolereren.

De essentie van de hier beschreven watermerktechnologie is het toevoegen van deze markering telkens wanneer een afbeelding wordt geladen. Ja, deze methode kent een aantal beperkingen die de prestaties aanzienlijk kunnen beïnvloeden, maar zoals ze zeggen: de klant heeft altijd gelijk en daarom ook. de taak vereist het dynamisch aanbrengen van een watermerk, en dit is precies wat er moet gebeuren.

Als iemand een eenvoudigere manier heeft, mag u reageren. Het zal interessant zijn om te luisteren.

Voordat ik code presenteer, wil ik de voordelen beschrijven en een werkend voorbeeld geven.

Pluspunten:

  • je kunt het watermerk minstens 500 keer per dag wijzigen;
  • kan in elk CMS worden geïmplementeerd (het is er op geen enkele manier aan gebonden).

Nadelen:

  • hangt af van de prestaties van de hosting (als u veel afbeeldingen heeft of een hoge resolutie heeft, kan dit de server aanzienlijk belasten);
  • een nieuwsgierige geest zal je watermerk nog steeds kunnen verwijderen.

Conclusies: voor het plaatsen van een klein aantal afbeeldingen met watermerken is deze methode perfect, maar als je een fotogalerij gaat openen, is het beter om naar iets minder zwaar beladen te zoeken.

Voorbeeld

Een watermerk implementeren met behulp van PHP

Zoals beloofd hoef je hiervoor geen speciale kennis te hebben, je moet:

  1. bestand, dat zich in het archief bevindt, en plaats het in de hoofdmap van uw site;
  2. We plaatsen de afbeelding die als watermerk zal fungeren in de hoofdmap van de site en geven deze een naam (in mijn geval is het een witte penseelstreek, dus de link is mogelijk niet zichtbaar tegen de achtergrond van uw browser). De afbeelding moet een PNG zijn, omdat deze een transparante laag heeft. Als u GIF wilt gebruiken, moet u het bestand bewerken afbeelding.php;
  3. op de plaats waar u de afbeelding met het watermerk wilt weergeven, plaatst u de code:

Dat is het. Iedereen is blij, zowel jij als de klant.

Als je een watermerk aan een foto wilt toevoegen zonder je druk te maken over afbeeldingseditors of als je het wilt toevoegen terwijl je foto's naar de server uploadt, dan is deze tutorial iets voor jou.

In deze zelfstudie laat ik u zien hoe u direct een watermerk aan een afbeelding kunt toevoegen zonder de originele afbeelding daadwerkelijk te wijzigen. Allereerst heb je een afbeelding nodig die je als watermerk kunt gebruiken.

Vervolgens vormen we de bestandskop:

// deze regel vertelt de browser dat we een jpg-afbeeldingsheader doorgeven ("content-type: image/jpeg");

Vervolgens genereren we een png-afbeelding en krijgen we de afmetingen:

// maak een watermerk in png-formaat $watermark = imagecreatefrompng("watermark.png"); // haal de breedte en hoogte op $watermark_width = imagesx($watermark); $watermark_height = afbeeldingeny($watermark);

We zullen hetzelfde doen met de originele afbeelding, maar alleen in jpg-formaat. Dit is gebruikelijk bij foto's die via een formulier worden geüpload. Wij gaan als volgt te werk:

// een jpg-afbeelding maken $image_path = "original.jpg"; $image = imagecreatefromjpeg($image_path); // haal de afbeeldingsgrootte op $size = getimagesize($image_path);

Nu moeten we een watermerk op de afbeelding plaatsen:

// plaats rechtsonder een watermerk. Inspringing 5px $dest_x = $size - $watermark_width - 5; $dest_y = $grootte - $watermerk_hoogte - 5;

Laten we vervolgens de overvloeiopties voor beide afbeeldingen instellen:

Imagealphblending($image, true); imagealphblending($watermerk, waar);

Ten slotte maken we een nieuwe afbeelding met behulp van de parameters:

// maak een nieuwe afbeelding imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height); afbeeldingjpeg($afbeelding);

Het is belangrijk om zelf op te ruimen:

// maak geheugen vrij imagedestroy($image); afbeeldingdestroy($watermerk);

U kunt Photoshop gebruiken om de transparantie van het watermerk aan te passen.

Dat is alles met theorie. Laten we nu onze kennis toepassen op een echt project. Dit alles moet in een bestand worden opgeslagen. Bijvoorbeeld genaamd watermark.php

Header("inhoudstype: afbeelding/jpeg"); // haal de afbeeldingsnaam op via GET $image = $_GET["image"]; // maak een watermerk $watermark = imagecreatefrompng("watermark.png"); // haal de hoogte en breedte van het watermerk op $watermark_width = imagesx($watermark); $watermark_height = afbeeldingeny($watermark); // maak een jpg van de originele afbeelding $image_path = "/path/to/image/folder/" . $afbeelding; $image = imagecreatefromjpeg($image_path); //als er iets misgaat if ($image === false) ( return false; ) $size = getimagesize($image_path); // plaats een watermerk op de afbeelding $dest_x = $size - $watermark_width - 5; $dest_y = $grootte - $watermerk_hoogte - 5; imagealphblending($image, true); imagealphblending($watermerk, waar); // maak een nieuwe afbeelding imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height); afbeeldingjpeg($afbeelding); // maak geheugen vrij imagedestroy($image); afbeeldingdestroy($watermerk);

Om nu een foto met een watermerk weer te geven zonder de originele afbeelding te wijzigen, gebruikt u de volgende code.