spájame
slovenskú
IT komunitu
pridaj sa
Registrácia · Login

Andrej Ševčík 26.6.2013
Hodnoť článok:
7 0

Automatický watermark po uploade obrázku (PHP)

Jednoduchý trik ako aplikovať vodoznak na veľké množstvo obrázkov v priečinku bez tvrdého prepisovania súborov.

Pred istým časom ma jeden z mojich klientov požiadal o aplikovanie watermarku na fotografie jeho produktov v e-shope, nakoľko mu ich vraj kopíroval iný web. Požiadavka však bola aby sa fotografie ukladali bez watermarku, nakoľko sa naťahujú do viacero e-shopov. Pre každý e-shop sa tak watermark mal vytvárať zvlášť.

Našiel som jednoduchý skript, ktorý som upravil na moje potreby. Funkčnosť skriptu je veľmi jednoduchá. Skladá sa z 3 súborov, ktoré stačí nakopírovať do adresára s fotografiami.

Súbor .htaccess a .w.php je špecificky vytvorený pre moje potreby, po jednoduchých úpravách si ho môžete ľubovolne prispoôsobiť...

Snáď to aspoň niekomu zjednoduší život ;)

Súbor .htaccess:

RewriteEngine on
RewriteRule ^([^thumb].*\.[jJ].*)$ .w.php?i=$1

Súbor .w.php:

$basedir=".";
$watermarkimage=".w.png";
$file=basename($_GET['i' ]);

$image = $basedir."/".$file;
$watermark = $basedir."/".$watermarkimage;

$im = imagecreatefrompng($watermark);

$ext = substr($image, -3);

if (strtolower($ext) == "gif") {
if (!$im2 = imagecreatefromgif($image)) {
echo "Error opening $image!"; exit;
}
} else if(strtolower($ext) == "jpg") {
if (!$im2 = imagecreatefromjpeg($image)) {
echo "Error opening $image!"; exit;
}
} else if(strtolower($ext) == "png") {
if (!$im2 = imagecreatefrompng($image)) {
echo "Error opening $image!"; exit;
}
} else {
die;
}
imagefilledrectangle($im2, 0  , (imagesy($im2))-(imagesy($im)) , imagesx($im2)  , imagesy($im2) , imagecolorallocatealpha($im2, 0, 0, 0, 100) );
imagecopy($im2, $im, (imagesx($im2)-(imagesx($im))), (imagesy($im2))-(imagesy($im)), 0, 0, imagesx($im), imagesy($im));

$last_modified = gmdate('D, d M Y H:i:s T' , filemtime ($image));

header("Last-Modified: $last_modified");
header("Content-Type: image/jpeg");
imagejpeg($im2,NULL,80);
imagedestroy($im);
imagedestroy($im2);

Zoznam použitých súborov:

.htaccess
.w.php
.w.png

Pred aplikáciou watermarku

Po aplikácii watermarku

Andrej Ševčík Andrej Ševčík

Aktuálne pracuje ako webdizajnér a programátor. Stál pri zrode webov PDA.sk a nakoduj.to! Zaujíma sa o moderné technológie a dizajn.

MOJE MOTTO:
Neobzerám sa cez plece na to co som popáchal, ja mám plnú hlavu nových lotrovín ;)


Hodnoť článok:
7 0

6 komentárov k článku:

Komentovať môžu iba prihlásení

Zaregistruj sa cez bezplatnú registráciu alebo použi login cez Facebook (FB Connect)

Prihlás sa tu, ak už máš profil na Zajtra.sk:


Zabudol som heslo

0 0 Juraj Rýdzi 12.7.2013 17:13:34
Ak ma eshop 16gb fotografii, tak sa predpoklada uspesny eshop s vysokou navstevnostou a urcite by som to nerobil on-the-fly aj ked dnesne servery su vykonne. Zaujimava varianta by bola pouzit niektore image cdn ...
1 0 J 27.6.2013 10:24:01
Ked si tie dve fotografie das vedla seba, tak je tam velmi vyrazny pokles kvality, zrejme kompresiou na 80% pricom velkost obrazkov je takmer rovnaka.
Tutorial chvalim, no na komercnych projektoch by som urcite skor pouzil nieco efektivnejsie ako imagemagick, graphickmagick a podobne.
0 0 Matúš Jančík 27.6.2013 10:17:47
Mne toto par krat tiez narobilo problem, hlavne ked admin do eshopu podaval velke obrazky. Ja vysledny obrazok ukladam do suboru (najjednoduchsie pod nazvom MD5($file.$x.$y).".".$ext) do spolocneho adresara, ktory potom cistim Cron jobom. Pred samotnym zmensovanim sa len pozriem ci dany subor existuje a podhodim ho.
0 0 Andrej Ševčík 26.6.2013 23:10:17
Ak ma shop 16gb fotografii, ktore sa natahuju na 4 rozne verzie je efektivnejsie generovat fotografie ako drzat ich stvormo. co sa tyka vykonu aktualne to server bezproblemov stiha, cize tu by som problem neriesil.. Samozrejme je individualne od eshopu k eshopu
0 0 Eduard Marcinčo 26.6.2013 23:00:50
Pri velkych eshopoch z hladiska vykonu nie je velmi najstastnejsie robit watermark "on-the-fly".
0 0 J 26.6.2013 22:55:47
V dnesnej dobe uz asi skor imagemagick :)
Zajtra.sk > Programovanie > PHP > Automatický watermark po uploade obrázku (PHP)


Kritika

Vieš ako robiť veci lepšie? Pomôž našim odvážnejším členom a skritizuj im projekty!

Reklama

Seriály zo Zajtra.sk

Reklama