Vízjel készítése bővítménye nélkül

Több
10 éve 6 hónapja - 10 éve 6 hónapja #3155 Írta: Laza
Vízjel készítése bővítménye nélkül téma létrehozva Laza által
Sokan kérdezték már tőlem, ezért itt megosztom.
Ha csak egyszerűen szeretnél a képekre egy watermark (vízjel) tenni és nem szeretnél fizetős plugint vagy komponenst venni itt egy "egyszerű" megoldás, abban az esetben, ha a mod_rewrite a szerveren engedélyezve van.

Készíts Photoshoppal vagy bármilyen képszerkesztővel egy watermark.png file-t. (ajánlott méret 100x50 px, nagyobbat nem érdemes). Másold fel az images könyvtárba (szabadon választott is lehet, csak az útvonalat jegyezzük meg.).

Íme a watermark.php, amit az images könyvtárba érdemes tenni, de szabadon választott is lehet, csak az útvonalat jegyezzük meg.
Code:
<?php //megmondja a szervernek, hogy ez egy kep lesz header('Content-type: image/jpeg'); //kep utvonala $img = $_GET['src']; //watermark pozicioja $p = $_GET['p']; if(!$p) $p = 'br'; /* p erteket az alabbi listabol valaszthatjuk: tl = top left tc = top center tr = top right cl = center left c = center of the image cr = center right bl = bottom left bc = bottom center br = bottom right */ //a vizjeles kep minosege $q = $_GET['q']; //ha nem adunk meg erteket, akkor 93 lesz if(!$q || $q<0 || $q>100) $q = '93'; $filetype = substr($img,strlen($img)-4,4); $filetype = strtolower($filetype); //ha valakinek kellenek a gif-re vagy png-re is vegye ki a / / jelet az adott sor elol //if($filetype == ".gif") $image = @imagecreatefromgif($img); if($filetype == ".jpg") $image = @imagecreatefromjpeg($img); //if($filetype == ".png") $image = @imagecreatefrompng($img); if (!$image) die(); //az eredeti kep meretenek beolvasasa $img_w = imagesx($image); $img_h = imagesy($image); /*ha a kep neveben van meret magadva akkor ezt kell hasznalni (vedd ki a / * * / -ot) if (eregi("490x490", $img)) { imagejpeg($image, null, $q); die(); } else { $watermark = @imagecreatefrompng('watermark.png'); } */ //ha meret limitet szeretnel pl. ha kep szelessege ($img_w) nagyobb mint 200px tegye ra, ha magassag akkor $img_w vagy mindketto ($img_w<"200" AND $img_h<"200") if ($img_w < "200") { imagejpeg($image, null, $q); die(); } else { $watermark = @imagecreatefrompng('watermark.png'); } //vizjel kepenek merete $w_w = imagesx($watermark); $w_h = imagesy($watermark); //pozicio es meretarany kiszamolasa if($p == "tl") { $dest_x = 0; $dest_y = 0; } elseif ($p == "tc") { $dest_x = ($img_w - $w_w)/2; $dest_y = 0; } elseif ($p == "tr") { $dest_x = $img_w - $w_w; $dest_y = 0; } elseif ($p == "cl") { $dest_x = 0; $dest_y = ($img_h - $w_h)/2; } elseif ($p == "c") { $dest_x = ($img_w - $w_w)/2; $dest_y = ($img_h - $w_h)/2; } elseif ($p == "cr") { $dest_x = $img_w - $w_w; $dest_y = ($img_h - $w_h)/2; } elseif ($p == "bl") { $dest_x = 0; $dest_y = $img_h - $w_h; } elseif ($p == "bc") { $dest_x = ($img_w - $w_w)/2; $dest_y = $img_h - $w_h; } elseif ($p == "br") { $dest_x = $img_w - $w_w; $dest_y = $img_h - $w_h; } // a $dest_x és $dest_y a vegeleges helye a vizjelnek. Mivel alapban a jobb also sarokba teszi ezet itt kivontasm belole 10-et, hogy szebb legyen. Ha mashova rakod, akkor vagy le kell venni a -10 et (pl. bal felso akkor +10 kell), ha kozepre akkor le kell venni. imagecopy($image, $watermark, $dest_x-10, $dest_y-10, 0, 0, $w_w, $w_h); imagejpeg($image, null, $q); imagedestroy($image); imagedestroy($watermark); ?>

Ha ezzel megvolnánk, mentsük el a watermark.php filet a images mappába.

Következő lépés a .htaccess file módosítása (FIGYELEM! Csak akkor működik, ha a szerver támogatja a mod_rewrite-ot!), ha más helyre teszed, az útvonalat át kell írni!)
Ha nem csak jpg filerokra, akkor a (jpe?g) cseréld le (png|jpe?g|gif)-re. A p= határozza meg a vízjel pozícióját (lásd php file), a q= a minőséget.
Code:
RewriteRule (.*)images/(.*\.(jpe?g))$ $1images/watermark.php?p=br&q=90&src=$2

ezt a sor kell beszúrni a .htaccess file végére. Ha mindent jól csináltál a képeken megjelenik a watermark.png.

Ha valami probléma lenne írjatok.
Utolsó szerkesztés: 10 éve 6 hónapja Laza által.
A következő felhasználók mondtak köszönetet: boy, Isodius

Jelentkezz be, hogy te is részt vehess beszélgetésben!

Több
3 éve 8 hónapja #16024 Írta: boy
boy válaszolt a következő témában: Vízjel készítése bővítménye nélkül
Ez nagyon jó, most találtam meg. Egy baj van vele, hogy hiába változtatom a pozíciót a php fájlban, mindig ugyanoda teszi. Mivel már 7 éves a cikk, gondolom a php verzió lehet a ludas. Szívesen venném, ha valaki aktualizálná...

-gf-

Jelentkezz be, hogy te is részt vehess beszélgetésben!

Több
3 éve 8 hónapja #16027 Írta: Balázs
Balázs válaszolt a következő témában: Vízjel készítése bővítménye nélkül

Ha bizalmas információt szeretnél közölni az adminokkal, akkor tedd az üzeneted tartalmát a [ confidential ][ /confidential ] címkék közé (szóközök nélkül).

Joomla! tanácsadás, oktatás, fejlesztés - joomlabs.hu

Jelentkezz be, hogy te is részt vehess beszélgetésben!

Több
3 éve 8 hónapja #16033 Írta: boy
boy válaszolt a következő témában: Vízjel készítése bővítménye nélkül
Nekem ez nem akar működni...

-gf-

Jelentkezz be, hogy te is részt vehess beszélgetésben!

Több
3 éve 8 hónapja - 3 éve 8 hónapja #16035 Írta: Balázs
Balázs válaszolt a következő témában: Vízjel készítése bővítménye nélkül
Teszteltem, nálam működik. A kulcs a böngésző gyorsítótár ürítése. Ha nem privát lapon töltöd be először, vagy nem üríted a gyorsítótárat, akkor csakbizonyos idő után fog megjelenni.

Ha bizalmas információt szeretnél közölni az adminokkal, akkor tedd az üzeneted tartalmát a [ confidential ][ /confidential ] címkék közé (szóközök nélkül).

Joomla! tanácsadás, oktatás, fejlesztés - joomlabs.hu
Utolsó szerkesztés: 3 éve 8 hónapja Balázs által.

Jelentkezz be, hogy te is részt vehess beszélgetésben!