Zdravim vsechny
potreboval bych vytvorit pomoci PHP pruhledny obrazek, ale vubec nevim jak. muzete mi prosim poradit ? Dekuji.
To není vůbec žádný problém.. ale záleží na pár věcech - primárně výsledný obrázek musí být ve formátu, který průhlednost podporuje (png,gif).
A potom už stačí použít jednu z funkcí:
imagealphablending() - více php.net/imagealphablending
imagecolortransparent() - více php.net/imagecolortransparent
První použiješ v případě, že celý obrázek vytváříš v php - například pokud výsledkem má být jen obrázek s textem, tak touhle funkcí nastavíš pozadí na průhledné a ostatní věci (např. viditelný text) pokládáš přes to.
Druhou použiješ v případě, že nějaký obrázek načítáš, nebo máš nějaký složitější vzor. Funguje tak, že zvolenou barvu (jeden z parametrů), změní na průhlednou. Tady si musíš jen dávat pozor na to, aby se "barva do průhlednosti" v obrázku nevyskytovala i jinde, než chceš průhlednost.
Dekuju, ale asi nekde delam chybu pac pozadi je porad cerne.. stvoril sem tenhle kod..
<?
$obr = imagecreatetruecolor(500, 500);
imagealphablending($obr, true);
$logo = imagecreatefrompng("bg.png");
imagecopyresized($obr, $logo, 270, 170, 300, 200, 30, 30, 30, 30);
imagepng($obr, 'neco.png');
imagedestroy($obr);
?>
vysledek by mel byt pruhledny obrazek 500x500 s nazvem neco.png ve kterym by mel byt umisten obrazek bg.png v nejake velikosti a na nejake pozici....
Jaj.. já jsem to předtím špatně napsal.. sry..
Zapnutím alphablendingu pomocí funkce imagealphablending() se původní pozadí nesmaže, pouze se umožní to, že další vrstvy (například text, vložený obrázek) můžou být částečně průhledné - třeba jen z 50%.
Budeš potřebovat imagecolorallocatealpha().. tvůj skript stačí upravit tak, že po vytvoření obrázku jen zavoláš:
$black = imagecolorallocate($im, 0, 0, 0);
imagecolortransparent($obr, $black);
a na co to potrebujes? ono ked das priehladnost nejakej farbe a okraje nepriehladnosti neosetris antialiasingom, tak to budes mat kostrbate. nestacilo by ti nastavit polopriehladnost v css-ku?
"polopriehladnost v css-ku" - a to umí cross-browserově?
R.U.R. (jsrosa.wz.cz) Pokud ty browsery minis IE8, FF (,O) , pak je odpoved ano. Proc se ptas?
Hm, jaké zastupení má aktuálně IE8?
(ne, neodpovídej, ta byla řečnická)
http://toplist.cz/global.html
v IE 7 a neco i v 6 to funguje take. V souctu 15+20+15+40%, to mame 50% pro ie a 40% pro G. Pokud tohle nevis, tak nepokladej ani recnicke otazky.
Že se vám do toho pletu, ale když vidím "jeden o voze, druhý o koze"..
To, čeho lze docílit s průhledností v png se nedá udělat jen s css. Css sice umožní udělat (polo)průhledný obrázek, ale neumožní udělat průhledný třba jen pravý okraj (protože má jít "do ztracená").
To, jestli někdo považuje zápis jedné vlastnosti na 4 řádky...
opacity: 0.6;
filter: alpha(opacity=60);
-moz-opacity: 0.6;
-khtml-opacity: 0.6;
...jako cross-browserový je už věc jiná (a pro mě to cross-browserové není).
To se tušim dá řešit částečně průhlednou obrázkovou maskou s černobílým přechodem - ovšem jen někdy...
Slušné nové verze slušných prohlížečů podporují normální opacity, takže cross-nově-browserově to není problém :-)) Ale pokud by mi na tom záleželo, tak bych si ještě pár let počkal, než bych to někam nasadil...
Freeze (dreamer.kvalitne.cz)
DXImageTransform.Microsoft.Gradient
Na slayer office je na to JS, ktery prida par divu a provede rozdilny gradient pro opacitu. Dalo by se pres JS doprogramovat univerzalne pomoci opacity a clip. Nicmene rec byla o
"polopriehladnost v css-ku" - a to umí cross-browserově?
Ne o gradientu.
Aspon ja chapu slovo polopruhledny jako opacity=50.
peta: Gradient byl příklad, ten teoreticky jde (i když cross browserově asi jen s javascriptem). Třeba vlnkový okraj už ale bude několikanásobně složitější (a bez javascriptu a použití masky obrázku to asi vůbec nepůjde).
Nicméně řeč původně nebyla o "polopriehladnost v css-ku" ale o průhledném obrázku.
A jak jsem už jednou napsal, zápis 1 vlastnosti na 4 řádky pro mne není dostatečně cross-browser...