Nyní bych tu měl jeden tutoriál, který Vám přidá automaticky do obrázku vodoznak. To se hodí v případě, že máte na webu hodně fotek, které nechcete aby si nikdo stáhnul. Takto se mu u každé fotky bude zobrazovat vodoznak. V PHP k tomu slouží Image funkce, pro které musíte mít nainstalovanou GD knihovnu. Ta však bývá často součástí serveru. Nyní se pusťmě do programování, které není nijak složité.
Začneme tím, že si vyrobíme vodoznak ve photoshopu, nastavíme mu třeba 30% alfa kanál a uložíme ve formátu PNG. Aby se vodoznak zobrazoval, musíme ho propojit s fotkou. To uděláme tak, že vyrobíme PHP script, který se bude tvářit jako fotografie, protože mu nastavíme odpovídající hlavičky. Vytvoříme si soubor index.php, do kterého budeme postupně psát následující části kódu.
<?php
/* nastavení hlaviček,
aby se script tvářil jako obrázek */
header('Content-type:
image/jpeg');
header('Content-transfer-encoding: binary');
?>
Protože tento script slouží k přidávání vodoznaku do všech fotek kterých určíme, musíme mu adresu předat třeba v URL, v proměnné $_GET[„addr“] a zároveň musíme určit cestu k vodoznaku.
<?php
// uložení adres do
lokálních proměnných
$addr = $_GET['addr']; // uložíme adresu do lokální
proměnné
$vdz = "./vodoznak.png"; // adresa vodoznaku
?>
Nyní je třeba zjistit velikost fotek pomocí funkce getImageSize.
<?php
$size_addr = getImageSize($addr); // zjistí velikost fotky
$size_vdz = getImageSize($vdz); // zjistí velikost
vodoznaku
?>
Dále pomocí funkcí načteme vodoznak a fotku do proměnných. Zároveň si vytvoříme černé plátno, do kterého později obrázky vložíme.
<?php
$new =
imageCreateTrueColor($size_addr[0],$size_addr[1]); /* vytvoří nové černé plátno o
rozměrech fotografie */
$image =
imageCreateFromJpeg($addr); /* načte do proměnné fotografii
*/
$copy = imageCreateFromPng($vdz); /* načte do proměnné vodoznak
*/
?>
Nyní si vypočítáme souřadnice umístění vodoznaku. Musíme brát v úvahu, že počátek souřadnic je v levém horním rohu fotky, takže doprava a dolů jsou kladné hodnoty. Vzhledem k tomu že referenční bod vodoznaku si zvolíme také na levý horní roh, vkládací bod na fotce spočítáme jako celková vzdálenost minus velikost vodoznaku. Pro jednoduchost budeme vodoznak vkládat do pravého spodního rohu fotky, ale samozřejmě to lze zadáním jiných souřadnic změnit.
<?php
$dst_x = $size_addr[0] - $size_vdz[0]; /* vypočítá souřadnice
umístění vodoznaku */
$dst_y = $size_addr[1] - $size_vdz[1]; /* vypočítá souřadnice
umístění vodoznaku */
?>
Nyní máme vše pro to, abychom vše vložili do sebe. Postupovat budeme takhle: vložíme fotku do černého plátna v proměnné $new, potom do toho na zadané souřadnice vložíme vodoznak. Děje se tak přes funkci ImageCopyResized.
<?php
imageCopyResized($new, $image, 0,
0, 0,
0, $size_addr[0], $size_addr[1], $size_addr[0], $size_addr[1]); /* vloží fotku do plátna
*/
imageCopyResized($new, $copy,
$dst_x, $dst_y, 0,
0, $size_vdz[0], $size_vdz[1], $size_vdz[0], $size_vdz[1]); // vloží vodoznak do plátna
*/
?>
Nyní už jen vyvoláme fotku na výstup do stránky a vymažeme údaje z mezipaměti
<?php
imageJpeg($new, '',
70); // Vloží obrázek do stránky se
70% kvalitou;
imageDestroy($new); // zruší mezipamět
obrázku
imageDestroy($image); // zruší mezipamět
obrázku
imageDestroy($copy); // zruší mezipamět
obrázku
?>
K obrázku nyní přistupujeme asi takto: <img src=„./index.php?addr=ADRESA_FOTKY“ alt=„popisek“ />.
Příklad:Ukázku tohoto tutoriálu můžete najít zde, když za ADRESA dosadíte cestu k fotce: http://www.pslib.cz/…t1/index.php?…
Má to ale jednu nevýhodu. Když si obrázek zobrazíme, vidíme skutečnou adresu fotky, kterou když zadáme vidíme fotku bez vodoznaku. Příště si ukážeme, jak na server nahrát fotky a přidat do nich vodoznak už při nahrávání.
Hlavní menu
Kategorie
Přihlásit
Anketa
Podporujeme

