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

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.

  1. Satyasatya-website.extra.hu

    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.

  2. Javit

    Ha a hirek.png -ét akarod konvertalni, akkor miért a hirek.jpg-et adod meg... annak úgy nem sok érteleme van.

  3. Lala

    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!

  4. Devil

    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?

  5. Vöri

    Ü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!

  6. tsaby

    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? :)

  7. Lala

    É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;
    }

  8. Lala

    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.

  9. swad

    watermark.png ill a kep .png eleresi utjat persze meglehet adni másképp is

    (GET[]); ($system->SETTINGS['siteurl'].'images/watermark.png';)

    etc

  10. B

    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