Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][GD] problem z PNG
sazian
post
Post #1





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

Ostrzeżenie: (0%)
-----


Witam,
mam obrazek zapisany w PNG z przezroczystymi elementami i przy pomocy biblioteki GD chcę umieścić go na jakimś tle,
próbowałem tak
  1. <?php
  2. $obrazek=ImageCreate(32,32);
  3. $czerwony=ImageColorAllocate($obrazek,255 ,0 ,0);
  4. ImageFill($obrazek,1,1,$czerwony);
  5.  
  6. $kontur = imagecreatefrompng("image/1/kontur.png");
  7. imagecopy($obrazek,$kontur,0,0,0,0,32,32);
  8.  
  9. Header("Content-type: image/png");
  10. ImagePNG($obrazek);
  11. imagedestroy($obrazek);
  12. ?>


niestety wyświetla się tylko obrazek PNG, a w miejsca przezroczyste jest wstawiany kolor biały sciana.gif

jeżeli to zrobię tak
  1. <?php
  2. $obrazek = imagecreatefromjpeg('image/1/czerwony.jpeg');
  3.  
  4. $kontur = imagecreatefrompng("image/1/kontur.png");
  5. imagecopy($obrazek,$kontur,0,0,0,0,32,32);
  6.  
  7. Header("Content-type: image/png");
  8. ImagePNG($obrazek);
  9. imagedestroy($obrazek);
  10. ?>


to wszystko działa, ale takie rozwiązanie mnie nie zadowala ponieważ chcę "dynamicznie" zmienić kolor tła

co robię źle questionmark.gif? jak to naprawić questionmark.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
siemieng
post
Post #2





Grupa: Zarejestrowani
Postów: 101
Pomógł: 7
Dołączył: 16.01.2007

Ostrzeżenie: (0%)
-----


Jeśli problem dotyczy tylko IE, a w innych przegladarkach jest ok, mozesz uzyc prostego skryptu "iepngfix"
http://www.twinhelix.com/css/iepngfix/

wygladalo by to tak:
  1. <!--[if lt IE 7.]><style type="text/css">
  2. img { behavior: url(app/dls/iepngfix/iepngfix.htc) }
  3. </style><![endif]-->
  4. </head>


dotyczy to wczesniejszych niz 7 wersji przegladarki IE, bo akurat w 7 jest ok:)

natomiast jak masz tak w innych przegladarkach to nie wiem...
Go to the top of the page
+Quote Post
sazian
post
Post #3





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

Ostrzeżenie: (0%)
-----


mam firefoxa smile.gif

to wygląda tak że mam np. obrazek PNG na którym będzie 1 czarny piksel a reszta 100% alpha, to po wstawieniu na to czerwone tło nie otrzymuje czerwonego obrazka z czarnym pikselem tylko biały obrazek z czarnym pikselem
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Musisz dać jeszcze
Kod
imagealphablending($img, false);
imagesavealpha($img, true);


--------------------
Go to the top of the page
+Quote Post
sazian
post
Post #5





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

Ostrzeżenie: (0%)
-----


nic z tego
przeszukałem cały manual i znalazłem smile.gif
zamiast ImageCreate trzeba dać ImageCreateTrueColor
Go to the top of the page
+Quote Post
potreb
post
Post #6





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Widziałeś ten przykład?

  1. <?php
  2. // Create a 55x30 image
  3. $im = imagecreatetruecolor(55, 30);
  4. $red = imagecolorallocate($im, 255, 0, 0);
  5. $black = imagecolorallocate($im, 0, 0, 0);
  6.  
  7. // Make the background transparent
  8. imagecolortransparent($im, $black);
  9.  
  10. // Draw a red rectangle
  11. imagefilledrectangle($im, 4, 4, 50, 25, $red);
  12.  
  13. // Save the image
  14. imagepng($im, './imagecolortransparent.png');
  15. imagedestroy($im);
  16. ?>


--------------------

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 20:17