Jakub Žilinčan / 01. 08. 2007, 00:00
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.
Copyright © 2002 - 2013 inet.sk, s. r. o. | Všetky práva vyhradené | Neprešlo jazykovou úpravou | ISSN 1336-1899
Využívame kvalitný webhosting za rozumnú cenu od Inet.sk