Webáruház fejlesztés közben jött a megrendelő kérése, hogy szeretné, ha a termék képek vízjellel lennének ellátva. Nos, hosszas keresés és kutakodás után, nem találtam olyan szkriptet, amely megfelelően működött is volna, ezért nekiültem, és írtam egyet. Íme:
<?
$wm_file = 'watermark.png';
$filename = $_GET['file'];
// Content type
header('Content-type: image/jpeg');
$watermark = imagecreatefrompng($wm_file);
$image = imagecreatefromjpeg($filename);
$img_width = imagesx($image);
$img_height = imagesy($image);
list($wm_width,$wm_height) = getimagesize($wm_file);
for($h=0;$h<=$img_height;$h+=$wm_height)
{
for($w=0;$w<=$img_width;$w+=$wm_width)
{
imagecopyresampled($image,$watermark,$w,$h,0,0,$wm_width,$wm_height,$wm_width,$wm_height);
}
}
imagejpeg($image, NULL, 100);
?>
Használat: a $wm_file-ban kell megadnunk, azt a PNG képet, amelyet a képen szeretnénk viszontlátni. Majd meghívjuk a fájlt a következőképpen: watermark.php?file=kep.jpgHTML-be illesztve:
<img src="watermark.php?file=kep.jpg" alt="" />
FIGYELEM: A vízjel ismétlődve (mozaikszerűen) jelenik meg a képen, illetve e megoldásban nincs cache réteg illetve nem figyeli a bejövő fájlnevet.
Harder
Profil
Korábbi hozzászólások (10)
A régi blogon érkezett hozzászólások archívuma. Új hozzászólást már nem lehet írni.
Hy!
Mgcsináltam amit írtál, létrehoztam a két fájlt. Beillesztem a léplinket a php-ba, aztán uj html oldalt nyitok hivatkozok a kép (kepek.php?file=hirek.jpeg. és nem tolt be a kép. a kép amugy hirek.png volt.
Ha a hirek.png -ét akarod konvertalni, akkor miért a hirek.jpg-et adod meg... annak úgy nem sok érteleme van.
Sziasztok,
csak olvasgattam eddig és tanultam sokmindent, amit itt-ott hasznosítottam is.
De most ez a cikk nagyon kapóra jött, pont ilyet kellett nekem is csinálnom, bár csak a kép közepére kellett betennem egy logót. De innen indulva nagyon könnyedén ment :)
Köszi Nektek a sok jó ötletet!
Sziasztok!
Én is megcsináltam ezt a vizjelezést,de nekem sem müxik.....
mindent megprobáltam,de nem hívja meg a képet....
kiterjesztésre is odafigyeltem
valakinek van ötlete?
Üdv!
Jelezném mindenkinek, hogy ez a megoldás JÓ! Csak azért írom, mert csomót küzdöttem több megoldással, de ez azonnal, pofa nélkül megy, ráadásul .png-vel, nem .gif-el!
Már csak valahogy be kell rakni a sarokba :D!
hali!
én is irtam erre egy függvényt. kicsit talán túlbonyolítottam... ez egyből el is menti úgy a képet hogy rajta van a vízjel.
100){
$percent = 100;
}
$destination = imagecreatefromjpeg($picture);
$dest_data = getimagesize($picture);
$waterMarkData = getimagesize($wmpic);
if ($dest_data[0]*($percent/100)
Viszont!!! A vízjel ugye többnyire PNG... de mikor rákerül a képre, a PNG átlátszó részei nem lesznek átlátszóak.(tehát pl egy szöveg ami átlátszó háttér előtt van, mikor rákerül vízjelként, a háttér is látszódni fog) Erre valakinek megoldás? Vagy mi? vagy hogy? :)
Én írtam egy függvényt, ami elvégzi a vízjel elhelyezést.
A függvény vár egy imagecreatexxx-szel előkészített image azonosítót és azt, hogy hová pozícionálja a vízjelet (F-fent, középen; L-lent, középen, egyébként pedig középen).
Ráteszi a vízjelet és visszaadja az image azonosítót, de immár az image-ben benne van a vízjel.
Nekem tökéletesen működik.
Íme a függvény:
function includeWatermark( $image, $hol='F')
{
$vizjel = $this->rootdir."/aingatlan_watermark.png";
$watermark = imagecreatefrompng($vizjel);
$img_width = imagesx($image);
$img_height = imagesy($image);
$wm_width = imagesx($watermark);
$wm_height = imagesy($watermark);
$w = 0; #floor( ($img_width-$wm_width)/2);
if ( $hol=="F")
$h = 0;
elseif ($hol=='L')
$h = $img_height-$wm_height;
else
$h = floor( ($img_height-$wm_height)/2);
imagecopyresampled($image,$watermark,$w,$h,0,0,$wm_width,$wm_height,$wm_width,$wm_height);
return $image;
}
oppá, lemaradt a kódbeillesztő kód :(
Egyébként jópár cikket nem tudok elolvasni, mert csak a szerző van kiírva, a cikk nem jelenik meg (a hozzászólások és egyéb ilyesmi azonban látható). Ilyen többek között a wp-syntax cikk is, ahol meg akartam nézni, hogy hogyan kell beilleszteni a kódot.
watermark.png ill a kep .png eleresi utjat persze meglehet adni másképp is
(GET[]); ($system->SETTINGS['siteurl'].'images/watermark.png';)
etc
Nálam is baj van a cikkekkel. De az előnézet szerint
(Ctrl+í)pre lang="programnyelv" line="szám"(Ctrl+y)
kód
(ctrl+í)/pre(ctrl+y)
Ui. A kisebb-nagyobb zárójeleket a ctrl+í ctrl+y jellel láttam el, mert nem akarja egyébként megjeleníteni. Azt hiszem.
Van hozzáfűznivalód? Írj nekem közvetlenül.
Kapcsolat