Autor Zpráva
nethor
Profil
Zdravím,
mám problém s funkcí newPseudoImage() // gradient.
Má se vykreslit gradient z transparentní do modré.
<?php
$image = new Imagick();    
$hodnota = $image->newPseudoImage(150,150,'gradient:transparent-#00f');
$image->setImageFormat('png');
header("Content-Type: image/png");
echo $image;
?>

Na wedosu mám 2 hostingy, na jednom script funguje správně na druhém ne:

správně:
http://imagick.firm-web.cz/gradient.php
ImageMagick 6.6.4-1 2010-12-17

Chybně (vykreslí se pouze modrá):
http://imagick.hor.cz/gradient.php
ImageMagick 6.5.4-7 2010-11-10
fce vrací true, žádná chybová hláška.

Zákaznická podpora od toho dává ruce pryč,
nevíte, jak bych to mohl fixnout, nebo obejít?
Davex
Profil
nethor:
Zákaznická podpora od toho dává ruce pryč,
nevíte, jak bych to mohl fixnout, nebo obejít?
Změnit hosting, když nevyhovuje.
Darker
Profil
nethor:
nevíte, jak bych to mohl fixnout, nebo obejít?
Jde to udělat pomocí klasických funkcí (tohle co tu používáš je pro mě novinka). Ale nebude to takhle univerzální.
Budeš potřebovat imagecolorallocatealpha()


Ale nechápu, jak od toho můžou „dávat ruce pryč“ - je to jejich hosting a ty jsi (ev. byl) jejich zákazník...
Davex
Profil
Darker:
Ale nechápu, jak od toho můžou ‚dávat ruce pryč‘
Taky to nechápu. Mohli mu alespoň nabídnout přesun na jiný server, kde to funguje.
nethor
Profil
Davex:
Hosting na Weosu je v jiných ohledech super, měnit se mi ho nechce,
ale tohle mě na nětrochu mrzí.
Instalace jiné verze Imagick snad není takový problém
.... zvlášt, když jim už na jiném serveru běží.

Darker:
imagecolorallocatealpha(); používá GD, (a myslím, že neumí gradient, jen pruhlednost naplocho)
úpravu obrázků chci řešit pomocí třídy Imagick, což je výrazně pohlodlnější ... tedy pokud funguje.
Darker
Profil
nethor:
(a myslím, že neumí gradient, jen pruhlednost naplocho)
Jistě, ale ty si taky ten gradient musíš vygenerovat tak, že vytvoříš všechny gradienty obsažené v tom rozmezí.
nethor
Profil
Darker:
S použitím Imagick to právě nemusím, umí to už metoda newPseudoImage().
Když funguje správně imagick, je to script na 5 řádků, viz výše.
Cyklem přes GD by to bylo asi o dost komplikovanější.

Nahoře je jen příklad, je to dílčí krok k vytvoření efektu zrcadlení:
Darker
Profil
nethor:
Cyklem přes GD by to bylo asi o dost komplikovanější.
Já nenabízím jednoduchá řešení. Jen řešení.
Ale popravdě mi to jako zas takové peklo nepřipadá. Jestli se v dnešní době lidé bojí jednoho cyklu asi se vážně blíží konec světa...

efekt zrcadlení
Možná bys to mohl udělat pomocí CSS a ušetřit si tak přenos a výkon. Samozřejmě, byl by tu taky problém s kompatibilitou.


for($i=0; $i<$height; $i++) {
    $cl = imagecolorallocatealpha ($im, $background[0] , $background[1] , $background[2] , round((($height-$i)/$height)*127));
    imageline($im, 0, $imheight+$i, imagesx($im), $imheight+$i, $cl);
    unset($cl);
}
Jsou to tři řádky. Není to příliš efektivní vzhledem k tomu, že to dělá odstín pro každou řadu pixelů, což je zbytečné.
$height představuje délku plochy odrazu.
$imgheight je uložená výška původního obrázku bez stínu.
$background je jen barva toho gradientu.



Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: