Autor Zpráva
Gecko
Profil *
Zdravim,
našel jsem si návod na watermark http://baglan.web.tr/watermarking-php .
Postupoval jsem takto:
do .htaccess, který je vložen ve složce fotogalerie (www (root webu)/fotogalerie jsem vložil toto:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule \.(gif|jpeg|JPG|png)$ http://www.potapeni-as.cz/watermark.php [QSA,NC]



a do rootu jsem vložil tento kód:
<?php

$path = 'home/httpd2/potapeni-as.cz/www/fotogalerie/';


$image = imagecreatefromstring(file_get_contents($path));

$w = imagesx($image);
$h = imagesy($image);

$watermark = imagecreatefrompng('./watermark.png');
$ww = imagesx($watermark);
$wh = imagesy($watermark);

imagecopy($image, $watermark, $w-$ww, $h-$wh, 0, 0, $ww, $wh);

header('Content-type: image/jpeg');
imagejpeg($image,'',100);
exit();

imagedestroy($image);

?>


Problém je, že při vykluknutí obrázku vyběhne error - http://www.potapeni-as.cz/watermark.php
GD knihovna je nainstalována.
Nevíte někdo co s tím?
Gecko
Profil *
Jeste dodam, ze obrazek "watermark.png" je v rootu
Davex
Profil
Cesta pravděpodobně neexistuje a z adresáře nejde vytvořit obrázek. Asi bude nutné použít relativní cestu k nějakému obrázku.

$path = 'home/httpd2/potapeni-as.cz/www/fotogalerie/';

$image = imagecreatefromstring(file_get_contents($path));
Gecko
Profil *
Davex
To vyjede chyba Warning: file_get_contents(http://www.potapeni-as.cz/fotogalerie/test/test.jpg.jpg) [function.file-get-contents]: failed to open stream: HTTP request failed! in /home/httpd2/potapeni-as.cz/www/watermark.php on line 6
Davex
Profil
Přepisovací pravidlo je potřeba změnit na stejné, jako má autor návodu a případně doplnit "RewriteBase /".
Obsah proměnné $path se v návodě také vytváří jinak, takže to bude nutné udělat stejně nebo změnit na
$path = dirname(__FILE__) . $_SERVER['REQUEST_URI'];


Osobně si myslím, že tento způsob vkladání vodoznaku je nevhodný, protože se skript provádí při každém zobrazení obrázku a server se zbytečně zatěžuje. Když už to musí být, tak vlož vodoznak přímo do těch obrázků.
Gecko
Profil *
Davex
Přímo se mi to nechce vkládat, nechci ničit originály.
Po úpravě žádná změna, zkoušel jsem i exampl na subdoméně ale také to nefunguje, nevím proč.
Obejvují se chyby, které jsem ani po zadání do googlu nenašel, nemůže to být serverem?
AM_
Profil
Tak tady to zavání hned dvěma jasnými chybami:
- uvádíš tam relativní cestu zcela zřejmě z rootu serveru, ale skript leží v rootu webu. Takže tam má být jen 'fotogalerie/' (relativní cesta, která ti bude z rootu webu fungovat)

-ad [#4] - tak tam je snad očividné "test.jpg.jpg", že je zřejmě něco špatně, že asi zadáváš nějak špatně adresu toho obrázku. Toto ti tu snad opravovat nemusíme, na to je schopný přijít i začátečník, proč se mu tam objevuje přípona 2x. Jinak je to pochopitelně správná cesta, o moc lepší, než zkoušet číst adresář jako soubor.
Gecko
Profil *
"test.jpg.jpg", že je zřejmě něco špatně,
Ano vím o tom, i po opravě to nejde. (Stránka se načítá neskutečně dlouho).
Asi jsem natvrdlej,
$path = 'fotogalerie/';

Nefunguje.
Není třeba napsán nebo špatně umístěn .htaccess ?
Bak
Profil *
-ad [#4] - Teda fuj, lokalni obrazek otevirat pomoci HTTP pozadavku!
AM_
Profil
Nefunguje.
Víš, že od zítřka se tady za tuto holou větu s nevyjádřeným podmětem bude střílet? I můj kamarád na hotelovce, kde se s počítačem učí maximálně psát všema deseti, mě sám od sebe o mnoho detailněji popíše problém.

.htaccess by měl fungovat tam, kde je (na watermark.php se to přesměruje přece správně, ne?)
"Stránka se načítá neskutečně dlouho" - tak si musíš zjistit, proč se ti to zacyklí. Mám ale takový pocit, že s tímhle .htaccessem to fungovat ani nemůže - musíš tam přidat, aby se skriptu watermark.php předal název vyžádaného souboru, vlastně si ani nedovedu představit, jak ho nyní zjišťuješ.
Představoval bych si to nějak takto:
RewriteRule (.*\.(gif|jpeg|JPG|png))$ ../watermark.php?file=$1[QSA,NC]

$path = 'fotogalerie/'.$_GET['file'];
Gecko
Profil *
AM_
Chtěl jsem říci, že zápis
$path = 'fotogalerie/';

nefunguje. (PO - $path..; PS - nefunguje).

Tvůj zápis skutečně funguje, za čež děkuji.
Mě jen nejde do hlavy, proč nefunguje ten originální script, takhle se dá snadno zjistit cesta k originálu a watermark ztrácí smysl. (Ne žy by ty fotky byly tak cenné, ale jsou tam i pěkné kusy, které chci nějakým způsobem ochránit).

Na jiném stroji to funguje bez problémů, faket nevím kkde je zakopán pes.
AM_
Profil
Chtěl jsem říci, že zápis
1

$path = 'fotogalerie/';

nefunguje


Tak k tomu se dá říct jen jedno - funguje.
Tento zápis přiřadí řetězcovou hodnotu 'fotogalerie/' proměnné $path.

Pochopitelně skriptu watermark.php musíš nějak předat, který obrázek má omarkovat, věštit zatím neumí. Můžeš obrázky schovat do nějaké podsložky (třeba "fotogalerie16234RF3C2"), návštěvník přece nevidí, kam si watermark.php pro obrázek sahá, nebo lépe - do adresářů s obrázky přes htaccess odepřít přístup.
Optimální by pochopitelně bylo owatermarkovaný obrázek generovat jednou a příště načítat z cache (tedy nejdřív kontrolovat, jestli existuje třeba $obrazek.jpg.wm, a pokud ano, tak ho načíst, pokud ne, tak jej vygenerovat), protože generování obrázků je poměrně znatelně časově náročné, to je už ale vyšší level.
Gecko
Profil *
Pouzil jsem reseni AM_.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: