Ablakok.  Vírusok.  Jegyzetfüzetek.  Internet.  hivatal.  Segédprogramok.  Drivers

Ha vízjelet szeretne hozzáadni egy fotóhoz anélkül, hogy a képszerkesztőkkel bajlódna, vagy a fotók szerverre való feltöltése közben hozzáadná, akkor ez a lecke neked szól.

Ebben az oktatóanyagban megmutatom, hogyan adhat hozzá vízjelet a képhez menet közben anélkül, hogy ténylegesen megváltoztatná az eredeti képet. Először is szüksége lesz egy képre, amelyet vízjelként fog használni.

Ezután létrehozzuk a fájl fejlécét:

// ez a sor közli a böngészővel, hogy jpg képfejlécet adunk át("content-type: image/jpeg");

Ezután formálunk png képés kapja meg a méreteit:

// png vízjel létrehozása $watermark = imagecreatefrompng("watermark.png"); // szélesség és magasság lekérése $watermark_width = imagesx($watermark); $vízjel_magasság = imagesy($vízjel);

Ugyanezt tesszük az eredeti képpel is, de csak jpg formátumban. Ez gyakori az űrlapon keresztül feltöltött fényképeknél. A következőképpen járunk el:

// jpg készítés képek $image_path = "eredeti.jpg"; $kép = imagecreatefromjpeg($kép_útvonal); // kép méretének lekérése $size = getimagesize($kép_útvonal);

Most vízjelet kell helyeznünk a képre:

// tegye a vízjelet a jobb alsó sarokra. 5px padding $dest_x = $méret - $watermark_width - 5; $dest_y = $méret - $vízjel_magasság - 5;

Ezután mindkét képhez beállítjuk a keverési beállításokat:

imagealphablending($kép, igaz); imagealphablending($vízjel, igaz);

Végül létrehozunk egy új képet a következő paraméterekkel:

// új kép létrehozása imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height); imagejpeg($kép);

Fontos, hogy elvigyük:

// memória felszabadítása imagedestroy($image); imagedestroy($vízjel);

A Photoshop segítségével beállíthatja a vízjel átlátszóságát.

Az elmélettel ennyi. Most egy valódi projektben fogjuk alkalmazni tudásunkat. Mindezt fájlba kell menteni. Például a watermark.php néven

Header("tartalomtípus: kép/jpeg"); // képnév lekérése a GET-en keresztül $image = $_GET["kép"]; // vízjel létrehozása $watermark = imagecreatefrompng("watermark.png"); // vízjel magasság és szélesség lekérése $watermark_width = imagesx($watermark); $vízjel_magasság = imagesy($vízjel); // jpg létrehozása az eredeti képből $image_path = "/útvonal/a/kép/mappa/" . $kép; $kép = imagecreatefromjpeg($kép_útvonal); //ha valami elromlik if ($image === false) ( return false; ) $size = getimagesize($image_path); // vízjelet tesz a képre $dest_x = $size - $watermark_width - 5; $dest_y = $méret - $vízjel_magasság - 5; imagealphablending($kép, igaz); imagealphablending($vízjel, igaz); // új kép létrehozása imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height); imagejpeg($kép); // memória felszabadítása imagedestroy($image); imagedestroy($vízjel);

Most egy vízjeles fénykép megjelenítéséhez az eredeti kép megváltoztatása nélkül használja a következő kódot.

A webhelytulajdonosok (fórumok, hirdetőtáblák stb.) gyakran szembesülnek azzal a problémával, hogy minden nagyméretű webhelyképet vízjellel látnak el.

Természetesen ez a probléma megoldható úgy, hogy minden képen manuálisan készítünk vízjelet, azonban egyrészt ez sok időt vesz igénybe, másrészt szükségessé válik a kép két változatának tárolása, vízjellel és anélkül.

A probléma megoldása az lehet, ha dinamikusan vízjelet helyezünk a képre, mielőtt átadnánk azt a webhely látogatójának.

Erre a problémára van megoldás az interneten két fájl formájában, amelyek tartalmát az alábbiakban közöljük.
A ".htaccess" fájl forráskódja

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

A "_watermark.php" fájl forráskódja

250) && ($info_o > 250)) ( // Alfa csatorna nélküli képek esetén // A függvény utolsó paramétere a vízjel átlátszatlanságának mértéke. ImageCopyMerge($out, $watermark, ($info_o-$info_w)/ 2, ($info_o -$info_w)/2, 0, 0, $info_w, $info_w, 25); // Alfa csatornával rendelkező képek esetén // Ebben az esetben az átlátszóságot magának a képnek az alfa csatornája szabályozza // imageCopy($out, $watermark, ($info_o-$info_w)/2, ($info_o-$info_w)/2, 0, 0, $info_w, $info_w; ) switch ($info_o) ( 1. eset : imageGIF($out); törés; 2. eset: imageJPEG($out); törés; 3. eset: imagePNG($out); break; default: return false; ) imageDestroy($out); imageDestroy($eredeti); imageDestroy($vízjel); return true; ) ?>

A megoldás a következőre csapódik le, a ".htaccess" fájl a képfájlokkal rendelkező könyvtárba kerül. Emellett a szerveren létrejön a "watermark" mappa, amely tartalmazza a "_watermark.php" szkriptfájlt és a tényleges "watermark.png" vízjel fájlt.

Ugyanakkor az interneten fellelhető eredeti verzióhoz képest mindkét szövegfájlon kisebb változtatásokat végeztem.

A ".htaccess" fájlban a reguláris kifejezés képfájl keresés, a „jpeg” kiterjesztést adják hozzá, mivel ez is gyakori.

A "_watermark.php" szkriptet úgy alakítottuk át, hogy a vízjel a kép közepére kerüljön (ezt a konkrét megoldandó feladat megkövetelte), és bekerült a létrehozott vízjel átlátszóságának beállítására is (megjegyzések a szkriptben test segít Önnek beállítani ezt a paramétert).

Arra is figyelni kell, hogy a "vízjel" mappát a képek mappába helyezve az eredeti források szerint nem éri el a kívánt eredményt, mert. ebben az esetben minden mappában saját ".htaccess" fájlnak és "vízjel" mappának kell lennie. Ez annak a ténynek köszönhető, hogy a ".htaccess" fájl abszolút elérési utat tartalmaz a webhely gyökérkönyvtárától a "_watermark.php" fájlig. Így, ha minden képeket tartalmazó mappában van egy külön "vízjel" almappa, ha módosítanunk kell a vízjelet (vagy a képre ráborító szkriptet), akkor az összes mappában módosítanunk kell.

A probléma elkerülése érdekében azt javaslom, hogy hozzon létre egy "vízjel" mappát a webhely gyökérkönyvtárában, és helyezzen el egy ".htaccess" fájlt a képkönyvtárakba anélkül, hogy minden alkalommal módosítania kellene. Ebben az esetben a vízjel vagy a szkript megváltoztatásához csak egy helyen kell változtatásokat végrehajtanunk a webhelyen. Hozzon létre különböző vízjeleket különböző mappákat képekkel ebben az esetben hivatkozhat különböző fájlokat".htaccess" különböző szkriptekhez, például "_watermark-1.php", "_watermark-2.php" stb.

Összegezve tehát azt mondhatjuk, hogy a vízjelek minden webhelyképre való alkalmazásához le kell töltenie az alább mellékelt archívumot, ki kell csomagolnia, el kell helyeznie a "vízjel" mappát a webhely gyökérkönyvtárába, ki kell cserélnie a vízjel fájlt " watermark.png" a sajátjával, és helyezze el a ".htaccess" fájlt az oldal azon könyvtáraiba, amelyek képeit vízjellel kell megjelölni.

Innen letöltheti az összes szükséges fájlt tartalmazó archívumot

Bizonyos esetekben vízjelek hozzáadása a webhelyén elhelyezett képekhez az egyetlen módja valahogy megvédi őket a lopástól. Ezenkívül azt mondják, hogy az ilyen vízjelek további forgalmat vonzanak.

Számos módja van a kép vízjelének PHP használatával, de az ügyfelemnek szüksége volt egy olyan alkalmazási módszerre, amely lehetővé teszi a vízjel bármikori megváltoztatását egy újra.

Mint kiderült, van ilyen megoldás.

Ezt általában olyan emberek használják, akik többnyire grafikus tartalmú webhelyeket fejlesztenek.

A vízjelezési módszer kiválasztása

E szégyen megvalósításának problémája abban rejlik, hogy meg kell választani, hogyan alkalmazzuk a vízjelet a teljesítmény és a rugalmasság között. Ideális megoldás, ami mindenkinek megfelelne, egyszerűen nem létezik. Ezért van sok megvalósítás.

Az én esetemben az ügyfél fenntartja magának a jogot, hogy bármikor és helyette márkát változtasson "Szarvak és paták"ír "Paták és szarvak". A kiválasztott vízjelezési módszernek ezt is el kell viselnie.

Az itt leírt vízjelezési technológia lényege, hogy ugyanazt a jelölést adjuk hozzá minden egyes kép betöltésekor. Igen, ennek a módszernek számos korlátja van, amelyek jelentősen befolyásolhatják a teljesítményt, de ahogy mondani szokás, az ügyfélnek mindig igaza van, és ezért ha annak is. Mivel a feladat dinamikus vízjel alkalmazását igényli, pontosan ezt kell tennie.

Ha valakinek van egyszerűbb módja, szívesen látjuk kommentben. Érdekes lesz hallgatni.

Mielőtt hozok néhány kódot, szeretném leírni az előnyöket, valamint egy működő példát.

Előnyök:

  • a vízjelet naponta legalább 500-szor módosíthatja;
  • bármely CMS-ben telepíthető (nincs hozzá semmilyen módon kötve).

Mínuszok:

  • a tárhely teljesítményétől függ (ha sok képed van vagy nagy felbontásúak, akkor ez jelentős terhelést jelenthet a szerveren);
  • egy érdeklődő elme még mindig el tudja távolítani a vízjelet.

Következtetések: kis számú vízjeles kép elhelyezéséhez ez a módszer a legjobb, de ha fotógalériát akarsz nyitni, akkor helyesebb valami kevésbé nagy terhelésűt keresni.

Példa

Vízjel megvalósítása PHP-vel

Ahogy ígértük, ehhez nem kell különösebb tudás, hanem:

  1. fájlt, amely az archívumban van, és helyezze el webhelye gyökérkönyvtárába;
  2. a vízjelként funkcionáló képet az oldal gyökérkönyvtárába helyezzük és elnevezzük (esetemben ez egy fehér ecsetvonás, így előfordulhat, hogy a link követésekor nem lesz megkülönböztethető a böngésződ hátterétől). A képnek pontosan PNG-nek kell lennie, mivel átlátszó rétege van. Ha GIF-et szeretne használni, akkor szerkesztenie kell a fájlt image.php;
  3. arra a helyre, ahol a képet vízjellel szeretné megjeleníteni, írja be a kódot:

Ez minden. Mindenki boldog, te és az ügyfél is.

Nagy kockázatot vállal, ha képeit és videóit az interneten teszi közzé, mivel tartalma könnyen másolható több száz más webhelyre. Nem lenne jó, ha egy másik oldalon megtalálná a képét a hírhez, amelyen keményen dolgozott, anélkül, hogy megjelölné a forrást, vagyis az Ön webhelyét, igaz? Finoman szólva is ideges leszel, de ha nem így lenne egyszerű kép a hírekre és a Photoshopban végzett nehéz munkára, ha azt mondod, hogy dühös leszel, nem mondasz semmit! Mit tehet tehát a grafika védelme érdekében?

Az interneten található képek vagy videók szerzői jogainak védelme érdekében általában digitális vízjelet vagy digitális vízjelet használnak a kényelem érdekében. Minden feltöltött képhez csatoljon vízjelet a biztonság érdekében. A CEH lehet oldala vagy cége logója, szépen és esztétikusan elhelyezve a feltöltött képeken.

Először hozzunk létre egy fájlt, amely tartalmazza a szükséges beállításokat konstansok formájában - /config.php:

Define("WATERMARK_OVERLAY_IMAGE", "/develop/images/watermark.png"); // A vízjel elérési útja define("WATERMARK_OUTPUT_QUALITY", 100); // A vízjelből vett kép minősége. Ne feledje, hogy a minőség közvetlenül befolyásolja a fájl méretét. define("FELTÖLTETT_KÉP_CÉL", "/develop/mappa1/"); // A kezdeti betöltött képek helyének elérési útja define("VÍZJELZŐ_KÉP_CÉL", "/develop/mappa2/"); // Átfedett vízjellel ellátott képek elérési útja

Gyűjtsük össze a fent létrehozott fájlokat a letöltést végrehajtó fájlban /upload.php

include("config.php"); include("functions.php"); $result = ImageUpload($_FILES["felhasználói fájl"]["tmp_name"], $_FILES["felhasználói fájl"]["név"]); if ($eredmény === false)( echo "A feltöltés nem sikerült!"; )

Például, ha a betöltendő kép a következő volt:

Ezután a vízjel betöltése és alkalmazása után a következő kép jelenik meg:

BAN BEN ezt a példát a feltöltött kép az egyik mappába, a digitálisan vízjellel ellátott kép egy másikba kerül mentésre, így mindig hozzáférhet az eredeti képekhez, de természetesen a CEH képeit érdemes elhelyezni az oldalon.

(178,4 KiB, 989 találat)

Az egyik érdekes dolog, amit a PHP GD grafikus könyvtárával tehet, az egy osztály, amely vízjelekkel látja el a képeket. Röviden, a vízjel egy olyan technológia, amely a digitális képeket vízjellel vagy feliratozással védi a jogosulatlan használattól. Ennek következtében felhasználható (és többnyire így is van) egy kép szerzői jogtulajdonosának meghatározására. Tehát menjünk tovább.

Bevezetés

Fejlesztésének ebben a szakaszában a PHP a funkciók széles skáláját kínálja a programozóknak a képek dinamikus generálására és kezelésére. Ebben a cikkben megmutatom, hogyan hozhat létre olyan osztályt, amely ugyanezeket a képeket vízjellel látja el. Ez az osztály két képpel fog működni: eredetivel és vízjellel. Kiegészítésként egy harmadik paraméter is bekerült - osztályunk alfa változót fog tartalmazni. Ez lehetővé teszi számunkra, hogy alfa csatornát használjunk a vízjelünkhöz.

Tájékoztatásul

alfa-csatorna (alfa-csatorna): a kép része, amely a kép egyes szakaszainak átlátszóságáról, míg a színcsatornák a kép színéről tárol információkat. BAN BEN grafikus szerkesztők a kép egy részének elfedésére (a szerkesztéstől való megvédésére). Egyes alkalmazásokban ezeket átlátszó maszknak nevezik.

Az alfa-csatornában található információk leggyakrabban a kiemeléseket jelentik – a színes területek valamilyen formáját vagy elrendezését. Az alfa-csatorna képen tartása 1/3-al növeli a fájlméretet. Az RGB képek legfeljebb 24 alfa csatornát tartalmazhatnak. A bittérképek és az indexelt képek nem tartalmazhatnak alfa-csatornákat.

Első rész – az alapok

Mielőtt elkezdenénk magának az osztálynak az írását, nézzük meg a benne használt függvényeket. Íme a listájuk:

# visszaadja a kép szélességét és magasságát imagesx() imagesy() # új valódi színű képet hoz létre imagecreatetruecolor # egy asszociatív tömböt ad vissza a piros, zöld és kék billentyűkkel (+alfa csatorna), amely tartalmazza a megfelelő értékeket megadott színindex imagecolorsforindex() # a kép egy megadott helyén lévő pixel színindexét adja vissza imagecolorat() # a megadott színből egyetlen képpontot rajzol imagesetpixel() # visszaadja a kép palettázott színindexének indexét, a színazonosítót (RGB komponensekből áll), és a kép palettázott színindexe, amely "legközelebb van" az RGB -értékhez (ez az adat szükséges az imagesetpixel() függvényhez) imagecolorexact() imagecolorallocate() imagecolorclosest()

Mint látható, a php-nek elegendő funkciója van a grafikával való munkához. Bár egyesek célja elméletben nem teljesen világos, a gyakorlatban minden sokkal egyszerűbb. Ezért, hogy kitaláljuk, hogyan dolgozzunk velük, alkalmazni fogjuk őket az osztályunkban.

A célhoz vezető út kiválasztása

Most, hogy már eldöntöttük "mini-projektünk" célját, térjünk vissza egy kicsit, és beszéljünk a megvalósítás módjairól.

Először is, az alkalmazásunk két képet kap - az eredeti képet és magát a vízjelet. Ezután meg kell határoznunk ezeknek a képeknek a méreteit (szélesség-szélesség és magasság-magasság). Szükségünk van ezekre az adatokra, hogy a vízjelet a kép közepére helyezzük (feltéve, hogy a vízjel mérete kisebb lesz, mint maga a kép).

Ezután rá kell helyeznünk a vízjelünket az eredeti képre. Ehhez össze kell adnunk az átfedő képek színeit (matematikailag), hogy megkapjuk a harmadikat.

És a végén meg kell jelenítenünk a kapott képet a böngészőben. BAN BEN ez az eset a kép közvetlenül a címkében megadott forrásból nyílik meg " "

Azt hiszem, az elmélet már elég - a kulcsfontosságú pontokat kellő részletességgel tárják fel. Most pedig térjünk át a forgatókönyv megírására.

Második rész – a forgatókönyv megírása

Kezdjük a legegyszerűbbel – írjunk egy osztályt, amely egy vízjeles fájlt hoz létre. Nevezzük "vízjelnek", és írjuk be a kódját az "api.watermark.php" fájlba. Az osztály „csontváza” három funkcióból áll:

A következő lépés a "vízjel" osztály függvényeinek kódjának megírása. Az "api.watermark.php" fájlt a következő kódsorokkal egészítjük ki:

# egy függvény, amely két forrásképet egyesít egy függvénybe create_watermark($main_img_obj, $watermark_img_obj, $alpha_level = 100) ( # konvertálja az alfa csatorna átlátszósági értékét %-ról tízre $alpha_level/= 100; # kiszámítja a kép méretét (szélesség és magasság) ) $main_img_obj_w = imagesx($main_img_obj); $main_img_obj_h = imagesy($main_img_obj); $watermark_img_obj_w = imagesx($watermark_img_obj); $watermark_img_obj_h = imagesy($watermark_img_obj_h = imagesy($watermark_img_obj_h); $main _img_obj_w /2)-($watermark_img_obj_w/2)); $main_img_obj_max_x=ceil(($main_img_obj_w/2)+($watermark_img_obj_w/2)); $main_img_obj_min_y=floor_obj_min_y=floor ) ); $main_img_obj_max_y=ceil(($main_img_obj_h/2)+($watermark_img_obj_h/2)); # új kép létrehozása $return_img = imagecreatetruecolor($main_img_obj_w, $main_img_obj_h); # " végigjárja az eredeti kódot " # vízjeles kép megjelenítése return $return_img; ) # a create_watermark() függvény vége

Most nézzük meg közelebbről a create_watermark() függvényt.

Először három paramétert adunk át neki:

# vízjellel ellátandó forráskép $main_img_obj # magának a vízjelnek tartalmaznia kell alfa csatornát $watermark_img_obj # vízjel alfa csatorna átlátszósági értéke, (0-100, alapértelmezett = 100) $alpha_level

(Fontos megjegyezni, hogy a funkciónk a képeket objektumként fogadja el, nem csak útvonalként, de erről később)

A következő lépés egy új, valódi színű kép létrehozása, amelynek méretei megegyeznek az eredeti képével. Ez a kép ($return_img változó) az eredeti képekből származó információk (kép és vízjel) kombinálására szolgál.

De előtte még mindig "át kell sétálni" mind a két eredeti képen, és "egyesíteni" őket. Még túl korai ezt megtenni – még nem állunk készen erre. Ehelyett elhelyezünk egy "néhány kód" megjegyzést, majd hozzáadunk egy kódrészletet erre a helyre.

Az utolsó lépés, hogy a módosított képünket megjelenítjük az azt kérő weboldalon. Ezután vegye figyelembe a fennmaradó két segédfunkciót.

Harmadik rész – Segítő funkciók

A create_watermark függvényen kívül a vízjel osztályunknak még két funkciója van. Folytassuk forrás osztály a következő sorokkal:

# átlagosan két szín, figyelembe véve a _get_ave_color($color_a, $color_b, $alpha_level) alfa-csatorna függvény átlátszóságát ( return round((($color_a*(1-$alpha_level))+($color_b*$alpha_level) )); ) # visszaadja a _get_image_color($im, $r, $g, $b) új képfüggvény legközelebbi RGB komponenseinek értékét ( $c=imagecolorexact($im, $r, $g, $ b); if ($c!=- 1) return $c; $c=imagecolorallocate($im, $r, $g, $b); if ($c!=-1) visszatér $c; return imagecolorclosest( $im, $r, $g, $ b);)

És most részletesebben. Az első "_get_ave_color" függvényünk két szín és egy alfa csatorna számértékeit veszi fel. Visszaadja az átlagos értéküket. Erre a függvényre azért van szükségünk, hogy meghatározzuk azt a színt, amelyet akkor kapunk, ha két rajz képpontjait egymásra helyezzük.

A második "_get_image_color" függvény a képet vörös (piros), zöld (zöld) és kék (kék) komponensekre osztja (rgb paletta). Beépített php függvények grafikával való munkához (leírásuk a cikk elején volt), az új képhez a legközelebbi színértéket kapjuk.

Ezen kívül még néhány pontot ellenőriznek. Először is, ha meg lehetett kapni a pontos értéket ($c változó), akkor azt a függvény adja vissza (return $c). Ellenkező esetben a rendszer az imagecolorallocate() függvény segítségével próbálja meg a színt egyeztetni. Ha ez nem segít az eredmény elérésében, akkor az imagecolorclosest () függvény használatával egyszerűen a legközelebbi (a legpontatlanabb) színérték kerül visszaadásra.

Nos, az osztályunk majdnem kész. Már csak a "create_watermark" függvényben a "some code" megjegyzést kell lecserélni a következő sorokra:

# végigmenni a képen for($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 && $vízjel_x< $watermark_img_obj_w && $watermark_y >= 0 && $vízjel_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["piros"], $watermark_rbg["piros"], $watermark_alpha); $avg_green = $this->_get_ave_color($main_rgb["zöld"], $vízjel_rbg["zöld"], $vízjel_alpha); $avg_blue = $this->_get_ave_color($main_rgb["kék"], $vízjel_rbg["kék"], $vízjel_alpha); # a kapott adatok felhasználásával számítsuk ki a színindexet $return_color = $this->_get_image_color($return_img, $avg_red, $avg_green, $avg_blue); # ha nem tud színt választani, akkor csak készítsen # másolatot az eredeti pixelről ) else ( $return_color = imagecolorat($main_img_obj, $x, $y); ) # rajzoljon egy új képet a kapott pixelekből imagesetpixel( $return_img, $x, $ y, $return_color); ) )

A kód ilyen jelentős részének megírása után szünetet tarthat, és részletesebben elidőzhet az elemzésén.

A szkriptünk először két "for" ciklus segítségével halad át a képen. Ezzel párhuzamosan a vízjel egyes pixeleinek koordinátáit is kiszámítja.

Ezután minden pixelnél megkeresi az RGB információt. Ha az aktuális képpont nem azon a területen van, ahol az eredeti kép és a vízjel metszi egymást, akkor osztályunk csak az új kép pixelt duplikálja. Ha a pixel a metszésterületen található, akkor az eredeti kép és a vízjel átfedésének eredményeként meg kell határoznunk a színét.

A metszésterület színének meghatározásához először meg kell kapnunk a vízjel RGB-változójának értékét a "for" ciklusokban kapott információk alapján. Ezután a „_get_ave_color” függvény segítségével meghatározzuk az új kép átlagos színértékét. Ezután jön a "_get_image_color" függvény, amely meghatározza a "return_img" függvény által használt színsémát.

Ennek eredményeként a "for" ciklusok befejezése után kész képünk van vízjellel.

És most nézzük meg az osztályunkat működés közben.

Negyedik rész - tesztvezetés

A kezdéshez két fájlra van szükségünk. Nevezzük el az elsőt "watermark_test.php"-nek, és helyezzük bele a következő kódot:



Ennek a fájlnak a célja nagyon egyszerű: megjeleníti az eredeti (main.jpg) és a kapott (watermark.png, vízjeles) képeket a böngészőben.

Amint látja, a második képünk (watermark.png) az image.php php fájlra vonatkozik, nem a képfájlra. Ez a hivatkozás úgy néz ki, mint egy GET kérés, ahol két változó értéke kerül át a php fájlba: $main és $watermark.

Nevezzük el a második fájlt "image.php"-nek, és helyezzük el a következő kódot:

create_watermark($main_img_obj, $watermark_img_obj, 66); # jelenítse meg az eredményül kapott képünket a böngészőben - # de előbb tudassa vele, hogy ez egy jpeg fájl fejléc ("Content-Type: image/jpeg"); header("Content-Disposition: inline; filename=" . $_GET["src"]); imagejpeg($return_img_obj, "", 50); ?>

Nos, elérkeztünk a döntőhöz. (ZIP, 47,6 Kb)

Ha hibát észlel, jelöljön ki egy szövegrészt, és nyomja meg a Ctrl + Enter billentyűket
OSSZA MEG: