/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Transparente farver med PNG virker ikke!!
Fra : Allan E


Dato : 16-01-02 17:25

Jeg har nogle problemer med at lave transperente farver med PNG med PHPs
indbyggede funktioner.
$src_butn, er et png billede med hvid som transparent farve, og det virker
fint i en browser, men når jeg kører den igennem nedenstående kode for at
skrive lidt tekst på billedet, så er det transparente pludselig
forsvundet??!!

Så var det jeg tænkte at det nok var fordi jeg skulle fortælle den hvilken
farve der skal være transparent igen, og fandt funktionen
ImageColorTransparent(), som det også ses af nedenstående kode. Men selvom
jeg specifikt fortæller den at hvis skal være transparent, så virker det
stadig ikke??

Er der nogen der har en idé om hvad der er galt, og meget gerne en måde at
få det til at virke??!!

Mvh Allan
-----------kode---------------------------
$im = ImageCreateFromPNG($src_butn);
$col = ImageColorAllocate($im, 255, 255, 255);
$trans_col = ImageColorAllocate($im, 90, 41, 10);
ImageColorTransparent($im, $trans_col);
ImageTTFText ($im,12,0,12,16,$col,$font,$linktext);
ImagePNG($im, $imageName);
ImageDestroy($im);
----------/kode-----------------------------



 
 
Nezar Nielsen (16-01-2002)
Kommentar
Fra : Nezar Nielsen


Dato : 16-01-02 18:41

"Allan E" <this@email.nogood.000> wrote in message
news:a249ei$qr9$1@sunsite.dk...
....
> Så var det jeg tænkte at det nok var fordi jeg skulle fortælle den hvilken
> farve der skal være transparent igen, og fandt funktionen
> ImageColorTransparent(), som det også ses af nedenstående kode. Men selvom
> jeg specifikt fortæller den at hvis skal være transparent, så virker det
> stadig ikke??
....
> $trans_col = ImageColorAllocate($im, 90, 41, 10);
> ImageColorTransparent($im, $trans_col);

den der farve er ikke særligt hvid - den er mere sådan henmod lortebrun ;)

--
Mvh. Nezar Nielsen
http://fez.dk/




Allan E (16-01-2002)
Kommentar
Fra : Allan E


Dato : 16-01-02 19:11

> > $trans_col = ImageColorAllocate($im, 90, 41, 10);
> > ImageColorTransparent($im, $trans_col);
>
> den der farve er ikke særligt hvid - den er mere sådan henmod lortebrun ;)

Sorry, min fejl..
Jeg kom til at bytte om på de to farver da jeg skrev indlægget!!
Der skulle have stået:

-----------kode---------------------------
$im = ImageCreateFromPNG($src_butn);
$col = ImageColorAllocate($im, 90, 41, 10);
$trans_col = ImageColorAllocate($im, 255, 255, 255);
ImageColorTransparent($im, $trans_col);
ImageTTFText ($im,12,0,12,16,$col,$font,$linktext);
ImagePNG($im, $imageName);
ImageDestroy($im);
----------/kode-----------------------------

Men bortset fra det, er der så nogen der har prøvet noget lignende??

Allan



Christian Joergensen (16-01-2002)
Kommentar
Fra : Christian Joergensen


Dato : 16-01-02 19:22

Allan E <this@email.nogood.000> wrote:

> $im = ImageCreateFromPNG($src_butn);
> $col = ImageColorAllocate($im, 90, 41, 10);
> $trans_col = ImageColorAllocate($im, 255, 255, 255);

Jeg er ikke sikker (idet jeg ikke er helt hjemme i png-formatet), men når
du laver dit billede ud fra et andet, genbruger du så ikke det billedes
palette af farver. Det kunne jo blive et problem, hvis ikke det oprindelig
havde en transparent farve.

--
Christian Jørgensen / I'm not as dumb as you look.
http://www.razor.dk /


Allan E (16-01-2002)
Kommentar
Fra : Allan E


Dato : 16-01-02 21:52


"Christian Joergensen" <mail@phpguru.dk> wrote in message
news:1145822.brtULZPHqS@flaf...
> Allan E <this@email.nogood.000> wrote:
[snip]

> Jeg er ikke sikker (idet jeg ikke er helt hjemme i png-formatet), men når
> du laver dit billede ud fra et andet, genbruger du så ikke det billedes
> palette af farver. Det kunne jo blive et problem, hvis ikke det oprindelig
> havde en transparent farve.

Men det har den netop og det virker fint...

Jeg har lavet lidt eksperimenter, og dette er hvad der sker:

Hvis jeg tager mit source billede som har transparency sat til hvid
(255,255,255), og kører igennem

$im = ImageCreateFromPNG($src_butn);
ImagePNG($im, $imageName);
ImageDestroy($im);

altså uden at lave noget ved det, andet end at indlæse det og skrive det ud
i en fil igen, så har transparency farven pludselig skiftet fra hvid
(255,255,255), til en orange (239, 173, 74), som også findes i billedes
pallette. Dette medfører en gennemsigtig streg hen over mit billede!!

Hvad går der galt?? Jeg gør jo i princippet intet ved billedet!!

Men hvis jeg så igen tilføjer

$trans_col = ImageColorAllocate($im, 255, 255, 255);
ImageColorTransparent($im, $trans_col);

for at igen vælge hvid (255, 255, 255) som transparent farve, og så skriver
til fil, så er der alsolut ingen transparency i det billede som kommer ud???

Er der ingen der har oplevet noget ligende før??
Hjælp!!

Allan





Allan E (17-01-2002)
Kommentar
Fra : Allan E


Dato : 17-01-02 19:32

> $im = ImageCreateFromPNG($src_butn);
> ImagePNG($im, $imageName);
> ImageDestroy($im);
>
> altså uden at lave noget ved det, andet end at indlæse det og skrive det
ud
> i en fil igen, så har transparency farven pludselig skiftet fra hvid
> (255,255,255), til en orange (239, 173, 74), som også findes i billedes
> pallette. Dette medfører en gennemsigtig streg hen over mit billede!!

Det kunne godt se ud som om det er en bug i ImagePNG i PHP v. 4.0.6 og
derunder...I hvert fald dem jeg har prøvet!!
I PHP v. 4.1.1, som en kammerart har installeret, virker ovenstående kode
fint og de transparente farver bevares!
Jeg har nu i stedet installeret gd med gif-understøttelse, og har blot
stiftet ImagePNG ud med ImageGIF, og det virker også fint, så det må være
noget med ImagePNG!!

Men jeg kan nu ikke finde noget i PHPs bug database på deres hjemmeside, men
det er i hvert fald fixet i den nyeste version!!

---------Case closed!!---------------

Tak til jer der prøvede at hjælpe!!

Mvh Allan



Søg
Reklame
Statistik
Spørgsmål : 177522
Tips : 31968
Nyheder : 719565
Indlæg : 6408670
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste