Grafika publishing webtip.cz grafika.cz mujiPod.cz mujmac.cz fotografovani.cz printing.cz builder.cz galerie
webtip.cz
adresář  | práce  | diskuse  | redakce  | inzerce
 
 


  Zápis copyrightů do obrázků pomocí PHP
o autorovi 
poslat mailem 
tisknout článek 
aktuální rubrika 
Nač se trápit pracným označováním svých obrázků v grafických programech, když pomocí php můžete zapsat jednoduché copyrighty do stovek obrázků během několika minut?

Čevelíček Marek - 27.09.2002 - clanek - Rubrika: PHP

Copyright je ochranná značka, která se na obrázky dává pro upozornění, že kopírováním nebo jiným rozšiřováním dotyčný porušuje autorská práva. Na internetu je umisťování copyrightů běžnou záležitostí především u obrázků, které se v elektronické podobě dají šířit velmi snadno. Druhá věc ovšem je, že pokud chcete zapsat copyright do kolekce obrázků pomocí nějakého grafického programu, musíte udělat značné množství pracovních úkonů, jako otevřít obrázek, pomocí nástroje pro vkládání textu napsat copyright, přesunout napsaný text do správného rohu pokud možno přesně a u všech obrázků stejně, uložit obrázek a začít s novým. Zapsání copyrightů do dvaceti obrázků vás tímto způsobem připraví o dobrou čtvrthodinu. A přitom pomocí PHP se zakompilovanou knigovnou pro práci s JPG obrázky to lze zvládnout během několika minut. Nečekejte, že výsledný copyright bude nějakým super fontem. Bude to prostá, textová značka.

Skript, který jsem pro vás na dnešek připravil bude mít ještě jednu velmi užitečnou vlastnost - budete si moci zvolit, zda chcete umístit značku dolů, nahoru, doleva nebo doprava. Je možno změnit i velikost textu, ale doporučoval bych ponechat nastavení, jak je - pokud byste chtěli místo velikosti 3 použít třeba 2, museli byste si trochu upravit násobek, který zjišťuje šířku celého textu. Ve skriptu si budete také moci jednoduše zakázat vypisování vybarveného obdélníku pod textem, který je implicidně povolen.

Začnu tedy s vysvětlováním, jak to celé poběží. Pro začátek si prohlédněte tento kus skriptu - je to v podstatě skoro celý skript:

<?
Přečtení adresáře s obrázky. Každý obrázek je nyní v poli $soubor, který začíná indexem 2.
for ($y=2; $y<=$i-1; $y++):
$image_input = $dir_in.$soubor[$y];
$image_output = $dir_out."marked_".$soubor[$y];
$size=GetImageSize($image_input);
/* Následující údaje je možno měnit podle uvážení */
$text = "Copyright 2002 Liquid";
$text_size = 3;
$quality = 94; //kvalita obrázku (1-100)
$left_right = 0;
$up_down = 0;
$on = 1; /**************************************************/
$x = StrLen($text)*7.05;
If ($left_right == 1):
$from_left = 2;
else:
$from_left = $size[0]-$x;
endif;
If ($up_down == 1):
$from_top = $text_size;
else:
$from_top = $size[1]-$text_size-7;
endif;
$fp = imagecreatefromjpeg ($image_input);
$tube = imagecolorresolve ($fp, 255, 255, 255);
$tube2 = imagecolorresolve ($fp, 0, 0, 0);
if ($on == 1):
if ($up_down == 1):
ImageFilledRectangle ($fp, $from_left-2, $from_top-$text_size, $from_left+$x, $text_size+9, $tube);
else:
ImageFilledRectangle ($fp, $from_left-2, $from_top-$text_size, $from_left+$x, $size[1], $tube);
endif;
endif;
imagestring ($fp, $text_size, $from_left, $from_top-4, $text, $tube2);
ImageJPEG ($fp, $image_output, $quality);
ImageDestroy($fp);
echo "<div><b>".$soubor[$y]." => marked_".$soubor[$y]." <span style=\"color: red;\">OK!</span></b><br></div>";
endfor;
?>

Na žačátku skriptu si načteme jména souborů s obrázky z výchozího adresáře a tyto uložíme do proměnné $soubor s indexem začínajícím od čísla 2. Následuje cyklus, v němž se zapíše copyright do jednoho obrázku. Nejprve si zjistíme šířku a výšku obrázku pomocí funkce GetImageSize(). Teď zapracuje uživatel a zvolí si, zda chce zapsat copyright doleva nebo doprava (pokud doleva, zadá do proměnné $left_right hodnotu 1) a dolů nebo nahoru (obdobně v proměnné $down_up = 1 pro výpis nahoru). Následuje zjištění, kolik místa nám zabere celá šířka textu. Část práce za vás udělá funkce StrLen(), která délku spočítá, ale protože je dost nepřesná, musíme si pomoct oním násobitelem, o kterém jsem tady už mluvil. Tento násobitel můžete ponechat pro text velikosti 3 a délce podobné ukázkovému textu na 7.05 - je to optimální. Pokud budete velikost nebo délku textu měnít, musíte si nejprve vyzkuošet na jednom obázku, jak bude copyright vypadat a násobitel případně o trochu pozměnit.

Pár řádků nyní přeskočím - stejně se tam počítají jen souřadnice textu a podkladu. Zajímavé jsou funkce imagecolorresolve(), které nám vrátí přibližnou hodnotu zadané barvy, přičemž barvy se udávají jako čísla od 0 do 255 v pořadí red, green, blue. Proč hledáme nejbližší barvu? Přece nechceme mít copyrighty s barvami, které do snímku například vůbec nesedí.

Jednoduchá podmínka if ($on == 1): kontrojuje, zda chceme pod textem mít podkladový obdélník. Podkladu se zbavíme tak, že v konfiguraci změníme proměnnou $on na hodnotu 0. Zkušenějším se omlouvám za to, že se o tom tak rozepisuji, ale ne každý s PHP pracuje dva roky.

Na závěr zapíšeme do obrázku konečně copyright. Použijeme k tomu funkci imagestring(). A je to! Na obrazovku vypíšeme vítězný text, aby měl uživatel pocit, že se skript aspoň trochu zadýchal. Docela dost by se zadýchal, kdyby měl na zmenšení stovky obrázků jen pár sekund, a proto pokud nemáte v úmyslu ho úplně odrovnat, zvyšte si funkcí set_time_limit(#počet_sekund#) časový limit na běh skriptu, jinak vám vrátí fatální chybu.

Pěkný den a hodně úspěchú při "značkování". Skript si můžete stáhnout TADY.

Čevelíček Marek


Hodnocení článku: -1- -2- -3- -4- -5-  Aktuální hodnocení: 2.81 (4043)

Relevantní články
Žádné články


Příspěvky do diskuse o aktuálním článku
roztok27.08.15:08a co zmena fontu
Liquid31.08.3:34RE: a co zmena fontu
Aleš Linhart09.10.9:48Utilita
majk10.10.16:52RE: Utilita
Roman29.05.14:26RE: RE: Utilita
Jíří Kocman02.10.17:33IM
  

 

  O vydavateli | Kontakt | Ceník reklamy | Ochrana osobních dat
©2002 Grafika Publishing. Všechna práva vyhrazena!