Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][GD] problem z PNG
Forum PHP.pl > Forum > Przedszkole
sazian
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
siemieng
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...
sazian
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
wookieb
Musisz dać jeszcze
Kod
imagealphablending($img, false);
imagesavealpha($img, true);
sazian
nic z tego
przeszukałem cały manual i znalazłem smile.gif
zamiast ImageCreate trzeba dać ImageCreateTrueColor
potreb
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. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.