Categories
© 2013 All rights reserved.
1

PHP&GD: vodotisk

Pokud chcete ochránit své publikované fotografie na internetu, můžete k tomu využít vodotisk, kterým si fotografii poznamenáte a částečně tak můžete zabránit neoprávněnému šíření.Opět jeden jednodušší článek, ve kterém si ukážeme, jak jednoduše vytvořit v PHP za pomocí GD knihovny vodotisk.

Pro vytvoření vodotisku si napíšeme velice jednoduchou třídu, která bude umožňovat do vstupního obrázku přidat vodotisk uložený v externím .gif souboru a to takovým způsobem, že vodotisk roztáhne přes celou plochu obrázku.

Třída neumožňuje vodotisk vkládat pouze na určitá místa obrázku, jak tomu dost často bývá (například pravý dolní roh), ale roztáhne jej od pravého horního rohu až po levý dolní roh a tím překryje celou plochu obrázku. Tento způsob je vhodný pouze pro obrázky, které mají určitý poměr šířky a výšky, například fotografie, použité ve fotoalbu, protože při špatných rozměrech vzniká vodotisk nečitelný.

Před napsáním třídy si nejprve vytvoříme obrázek, který se bude jako vodotisk vkládat. Tento obrázek většinou obsahuje text, popřípadě logo, kterým bude výsledný obrázek znehodnocen.

V mém případě použiji tento obrázek:




Výsledný obrázek, který obsahuje vodotisk bude vypadat takto:



pes


(kliknutím si obrázek zvětšíte)

Samotná třída je velmi jednoduchá. Obsahuje jedinou vstupní proměnnou (parametr), kterou je jméno obrázku, do kterého chceme vodotisk umístit.

V prvním kroku vytvoří nový obrázek z námi zadaného vstupního souboru. Tento obrázek si uloží do proměnné pro pozdější použití.

Ve druhém kroku vytvoří transparentní vodotisk o rozměrech stejných jako námi zadaný vstupní obrázek z obrázku vodotisku uloženého v souboru .gif.

V posledním, třetím kroku, spojí jednotlivé obrázky do jednoho tak, že transparentně překryje původní obrázek nově vytvořeným vodotiskem.
Třída výsledný soubor uloží do adresáře „output“ pro pozdější použití a zároveň jej zobrazí do na výstup.

Celý zdrojový kód třídy si můžete zobrazit zde: watermar.php.txt
Zdrojový kód včetně ukázky použití si můžete stáhnout zde: vodotisk.zip

Závěrem

Jedná se o opravdu jednoduchý způsob vodotisku, který by šel vyřešit mnohem jednodušeji. Zdrojový kód je záměrně rozepsán, aby byla pochopitelná jeho funkčnost.

Comments (1)

Add comment

About
Hi, i am programmer from the Czech Republic. I love web development (Ruby, Ruby on Rails, PHP, Nette) and iOS development (Objective-C, Cocoa).