Ahoj,
už tři hodiny se snažím vytvořit funkci pro vodoznak s tím, že se bude vodoznak přizpůsobovat velikosti obrázku. Vodoznak bude v JPG nebo PNG a bude mít svou vlastní průhlednost a ještě bude mít nějakou průhlednost cca 75% kterou se bude prolínat s fotografií.
Vodoznak vkládám pomocí ImageCopyMerge s tím, že načtu fotku, načtu vodoznak a hodím ImageCopyMerge s průhledností 75%. Tohle funguje ale problém je v tom, že potřebuji vodoznak někdy upravovat - změnit jeho velikost než jej použiju na obrázek a to se mi už nedaří. Jakmile změním rozlišení vodoznaku tak se průhlednost "zruší".
Velikost měním pomocí ImageCopyResampled tak, že vytvořím prázdný obrázek požadované velikosti, uvedenou funkcí do něj zkopíruji zvětšený / zmenšený vodoznak. Pokud ale tento obrázek použiju dál na ImageCopyMerge pro vložení vodoznaku, původní průhlednost prostě nefunguje a na celý vodoznak je použita pouze průhlednost 75% zadaná v ImageCopyMarge.
Navíc se mi fakt nedaří najít na netu něco co by fungovalo.
Moc děkuji za pomoc...
Fórum › PHP
PHP GD a průhlednost
To Míša : Průhlednost lze nastavit samozřejmě pouze tehdy, je-li vodoznak typu PNG.
if($image_type==3) // PNG
{
imagealphablending($tmp, false);
imagesavealpha($tmp,true);
$transparent = imagecolorallocatealpha($tmp, 255, 255, 255, 127);
imagefilledrectangle($tmp, 0, 0, $tn_width, $tn_height, $transparent);
}
Kdy $tmp je
$tmp = imagecreatetruecolor($tn_width,$tn_height);
a $tn_width,$tn_height jsou požadované velikosti.
Až po tomto by mělo následovat imagecopyresampled.
Sleduj mě na twitteru – @lukaschury.
To Curo : Takhle to používám ale asi dělám něco špatně. Jen abych to upřesnil, pokud použiju přímo ImageCopyMerge na dva obrázek kterej načtu přes ImageCreateFromJpeg a na vodoznak načtenej jako ImageCreateFromPng nebo ImageCreateFromGif tak to jede takhle, což je tak jak chci až na tu velikost:
Pokud udělám to samý ale změním velikost vodoznaku, dopadne to takhle:
Velikost vodoznaku měním takhle:
$WatermarkData = getimagesize( $WatermarkFileName );
$Watermark = ImageCreateTrueColor( 1280, 720 );
imagealphablending( $Watermark, false );
imagesavealpha( $Watermark, true );
$transparent = imagecolorallocatealpha( $Watermark, 255, 255, 255, 127 );
imagefilledrectangle( $Watermark, 0, 0, 1280, 720, $transparent );
ImageCopyResized( $Watermark, $WatermarkFromFile, 0, 0, 0, 0, 1280, 720, $WatermarkData[ 0 ], $WatermarkData[ 1 ] );
Zkus místo f-ce ImageCopyResized použít imagecopyresampled.
Má stejné parametry.
Sleduj mě na twitteru – @lukaschury.
Tak jsem zjistil, že je to další z PHP bugů. :smile11:
Řešení: http://www.redmonkey.org/php-bug-23815/
nezbyva nez sahnout po imagick, preci jenom, chcit po php, aby pracoval s obrazky.. no, hm, :) není to přímo určený jazyk na to. tím ale nechci obhajovat bugy, který jsou navíc objevený....
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Průhlednost v IE — založil Pixtr
Průhlednost — založil hajnis
Pruhlednost — založil BigBear
Pruhlednost — založil wetty
Průhlednost okna — založil Marek Kadlčík
Moderátoři diskuze