Autor Zpráva
ReVolt
Profil
Ahoj, chci do obrázku vložit vodoznak, ale mám s tím malý problém, vodoznak se vloží, ale chybně.
Když je vodoznak ve formátu .gif tak se vloží a aplikuje se na něj průhlednost (má průhledné pozadí ale chci ho ještě zesvětlit), ale pod ním a vpravo od něj je obrázek zešedlý a když jsem to zkouše s .png tak bylo šedé i to průhledné pozadí.
function vodoznak($obrazek) {
  $original = imagecreatefromjpeg($obrazek);
  $vodoznak = imagecreatefromgif("grafika/vodoznak.gif");
  imagealphablending($original, false);
  imagesavealpha($original, true);      
  list ($sirka, $vyska) = getimagesize($obrazek);
  list ($sirka_vodoznak, $vyska_vodoznak) = getimagesize("grafika/vodoznak.gif");
  //umisteni vodoznaku
  $sirka_umisteni = ($sirka / 2) - ($sirka_vodoznak / 2);
  $vyska_umisteni = $vyska - ($vyska_vodoznak + 25);
  imagecopymerge($original, $vodoznak, $sirka_umisteni, $vyska_umisteni, 0, 0, $sirka, $vyska, 35);
  imagejpeg($original, $obrazek, 90);
  imagedestroy($original);
  imagedestroy($vodoznak);  
}

nevidím tam chybu :(
Keeehi
Profil
Bez řádků 4 a 5 to taky nefunguje?
ReVolt
Profil
bohužel ne, hledal jsem na internetu a našel spoustu různých řešení ale nedaří se mi to zprovoznit
Keeehi
Profil
$image = imagecreatefromjpeg("./soubor.jpg");
list($width, $height) = getimagesize("./soubor.jpg");

$image_out = imagecreatetruecolor($width, $height);

imagecopy($image_out, $image, 0, 0, 0, 0, $width, $height);
                
$image_wm = imagecreatefrompng("./watermark.png");
list($width, $height) = getimagesize("./watermark.png");

imagecopy($image_out, $image_wm, 0, 0, 0, 0, $width, $height);
Už nevím, jestli je to všechno potřeba dělat takhle složitě, ale vykopal jsem to z jednoho starého projektu, kde mi to fungovalo. Pokud nepůjde ani toto, pak to může být způsobeno třeba nějak nestandardním uložením toho png obrázku.
ReVolt
Profil
nepomohlo, vodoznak jsem si vytvořil v GIMPu tak nevím čím to může být nebo v čem to mám vytvořit
Ugo
Profil
tak sem myslel jak tam mám pár věcí navíc a všechno to bylo kvůli změně velikosti toho vodoznaku. bez toho to mám taky jen createfrom*(), copy. obrázky dělám v gimpu a všechno funguje (alespoň png). Nicméně pokud zmenšuju vodoznak, tak před kopií abych to měl pěkně průhledné mám toto

$watermark = imagecreatetruecolor($watermark_width, $watermark_height);
imagesavealpha($watermark, true);
$trans_color = imagecolorallocatealpha($watermark , 0, 0, 0, 127);
imagefill($watermark , 0, 0, $trans_color);

pak copyresampled dostředu obr. a všechno fajčí
ReVolt
Profil
no já vkládám vodoznak do obrázků ,které zmenším, vodoznak nezmenšuju, zkoušel jsem to i bez zmenšení a pořád to blbne, vodoznak se vykreslí i s průhledností, ale pod ním a vpravo od něj je obrázek zešedlý
Keeehi
Profil
imagecopymerge($original, $vodoznak, $sirka_umisteni, $vyska_umisteni, 0, 0, $sirka_vodoznak, $vyska_vodoznak, 35);
ReVolt
Profil
Keeehi:
no to si ze mě děláš srandu, prošel jsem si kód snad stokrát, ale tohle jsem přehlédl, taková blbá chyba :), moc díky
Keeehi
Profil
ReVolt:
Takže ten kód v [#4] jsi vůbec nezkoušel co? Tam jsou ty rozměry správně a problémy by ti to nedělalo. Když už se někdo snaží ti pomoct, stálo by za to alespoň to řešení vyzkoušet!
ReVolt
Profil
Zkoušel, jen jsem tam naházel moje proměnné, ale zase blbě :)

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:

0