Watermark slúži na pridávanie popisov, podpisov, či iných obrázkov do už existujúceho obrázku. Ide o vynikajúcu formu, ako si chrániť svoje obrázky. Vyskúšajte, a uvidíte.
Tak ako aj pri zmene veľkostí obrázkov, aj tu sa dá pracovať s viacerými typmi watermarkov. Všeobecne sa rozdeľujú do tých, ktoré označia už uložený obrázok, alebo také, ktoré obrázok uložia rovno so značkou.
Bližšie ich potom môžeme separovať na obrázkové a textové, pričom textové môžu byť zvislé a vodorovné. V tomto diely sa budeme venovať zatiaľ len obrázkovým typom, v ďalšej časti sa pohráme aj s textom.
Obrázkový watermark s uložením
Ako to teda funguje? Vytvoríme si funkciu watermark, do ktorej budeme zadávať len obrázok, ktorý sa má označiť. To znamená, že obrázok z nášho serveru sa prepíše. Treba pripomenúť, že si ideme vytvoriť JPEG obrázok, ktorý bude v sebe mať PNG watermark.
Najpr si teda vytvoríme GD instanciu z PNG obrázku, a zistíme si jej veľkosti pomocou imagesx() a imagesy(). Vytvoríme si truecolor obrázok o týchto rozmeroch.
Potom, pomocou imagecreatefromjpeg() vytvoríme instanciu z nášho obrázku, a opäť zistíme jeho rozmery, tentokrát však, pomocou imagesize() (len kôli demonštrácii viacerých funkcií - kľudne sme mohli opäť použiť imagesx() a imagesy() ). Tá vráti do pola šírku a výšku obrázku.
Polohu watermarku bude v pravom dolnom rohu. Musíme si vypočítať jej súradnice, a to nasledovne: od šírky obrázku odrátame šírku watermarku, a ešte číslicu 5. Keby sme 5 neodrátali, watermark by bol umiestnený priamo v pravom dolnom rohu. Takto však bude s odstupom 5 pixelov. Tento istý proces prevedieme aj s výškou, čím zistíme súradnicu y.
Potom použijeme funkciu imagecopymerge( kam uložiť, súbor, dest_x, dest_y, src_x, src_y, src_w, src_h, pct ). Táto funkcia zlučuje dva obrázky.
Src_x a src_y určujú počiatok zlučovania obrázku o výške src_h a šírke src_w. Druhá časť obrázku bude umiestnená podľa súradníc dest_x a dest_y. Posledné číslo pct udáva percento prekrytia, ktoré môže byť na stupnici od 0 do 100. Ak je číslo rovné 100, funkcia je zhodná s imagecopy(). Napokon už len zobrazíme jpeg obrázok a pomocou imagedestroy() uvoľníme pamäť.
<?
function watermark($im){
//$im je obrazok pre ktory nahravame watermark
$watermark = imagecreatefrompng('watermark.png');
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
$image = imagecreatetruecolor($watermark_width, $watermark_height);
$image = imagecreatefromjpeg($im);
$size = getimagesize($im);
//vypocitame polohu watermarku
$dest_x = $size[0] - $watermark_width - 5;
//-5 znamena posun o 5 pixelov po osi x a y
$dest_y = $size[1] - $watermark_height - 5;
//vytvorime novy obrazok
imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 100);
//a ulozime uz s nahratym watermarkom
imagejpeg($image,$im,100);
imagedestroy($image);
imagedestroy($watermark);
}
?>
Označenie už uloženého obrázku
Pre demonštráciu viacerych typov, si teraz pre zmenu vytvoríme watermark, ktorý bude umiestnený presne v strede vo formáte priesvitného gifu.
Obrázok sa nikam neuloží, len sa doň vloží označenie. Postup je takmer rovnaký, ako pri prvej ukážke, líší sa len troma vecami:
<?
function online_watermark($im){
$watermark = imagecreatefromgif('../watermark.gif');
//zistime rozmery watermarku
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
$image = imagecreatetruecolor($watermark_width, $watermark_height);
//vytvorime jpeg obrazok
$image = imagecreatefromjpeg($im);
//zistime jeho rozmery
$size = getimagesize($im);
//vyratame suradnice umiestnenia watermarku
$dest_x = ($size[0] - $watermark_width)/2;
$dest_y = ($size[1] - $watermark_height)/2;
//zlucime obrazky
imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 100);
//a zobrazime
header("content-type:image/jpeg");
imagejpeg($image);
}
online_watermark("test.jpg","text");
?>
Vďaka imagecopymerge() sa dajú obrázky chrániť dokonale. Rôzne typy funkcií a fantázia dokážu z jednoduchých obrázkov vytvoriť celkom zaujímavé "diela". Niekoľko takýchto skriptov si ešte vytvoríme. Najbližšie sa pohráme s textovými popismi a označeniami obrázkov.
a čo takto pridať aj nejaký obrázok? príklad? demo?
skopírovať a okomentovať tutoriál je minimum.. spraviť z toho článok je už niečo viac
01. 08. 2007 xx 85.216.169.xxx
a len tak mimochodom, vobec to nie je dokonala ochrana. Uz aj zaciatocnici v programoch ako Gimp, Photoshop a pod. vedia retusovat urcite chyby na obrazkoch a toto nie je vobec ziadny problem. Zaciatocnikovy tam zostane mozno nejaka skvrnka, alebo rozmazane miesto, ktore si aj tak nikto na prvy pohlad nevsimne a skusenejsi grafik to odstrani uplne.
Za troska lepsiu ochranu povazujem znackovanie v kode (EXIF), alebo este lepsie steganografiu, ktora je necitatelna. Daju sa sice lahsie odstranit, ale ak si ich autor nevsimne, nema dovod si mysliet, ze tam nejaka ochrana je a preto ju ani odstranovat.
A vylepsenie prvej metody by mohlo byt znackovanie jednym, alebo viacerymi, viditelnymi vodoznakmi a dalsim(i) ludskym okom nepostrehnutelnymi vodoznakmi - co nie je vidiet, to sa neodstranuje, no programovo nie je problem usvedcit vinnika :-)
01. 08. 2007 still 91.127.248.xxx
Hej, zisla by sa nejaka ukazka.
01. 08. 2007 Ján Pavlík 87.197.106.xxx
Ukážka sa dá nájsť napríklad tu: odkaz mrkni aj na komentáre. Zaujímavá je aj funkcia pre spätné odstránenie vodoznaku.
03. 08. 2007 Anonym 85.135.227.xxx
V Megafoto.sk len za 300 €
Copyright © 2002 - 2012 Inet.sk, s. r. o.Všetky práva vyhradenéNeprešlo jazykovou úpravouISSN 1336-1899
Využívame kvalitný webhosting za rozumnú cenu od Webhosting Inet.sk