Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przeźroczyste tło dla PNG24 przy uzyciu GD, funkcja imagecopy
--michu--
post
Post #1





Goście







Witam,
problem jest nastepujacy mam skrypt, który wstawia przezroczytego pnga. Wszystko jest ok o ile ten png nie jest PNG24. Wowczas przeźroczyta czesc obrazka zamienia sie w biala czesc. Korzystam z funkcji imagecopy. PNG przgotowywuje w photosgopie. Czy da sie to jakos ominac?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Kihol
post
Post #2





Grupa: Zarejestrowani
Postów: 46
Pomógł: 6
Dołączył: 20.06.2005
Skąd: Pyskowice

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


Z tego co wiem MSIE nie pokazuje przeźroczystości PNG-ów.. może tutaj tkwi problem ?
Go to the top of the page
+Quote Post
andrzejmarek
post
Post #3





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 18.02.2005
Skąd: Katowice

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


Jak rozumiem, z otwartego obrazka przez imgcopy wklejasz coś do obrazka z imagecreate...

Problem w tym, że obrazek z imagecreate(truecolor) nie ma przeźroczystego tła. Wypełnij więc przed imgcopy nowy obrazek przeźroczystym kolorem:
  1. <?php
  2. imagefilledrectangle($destImage,0,0,$destSize[0],$destSize[1],imagecolorallocatealpha($destImage,255,255,255,255));
  3. ?>


Jakbyś dalej nie umiał dać sobie rady, pisze na gg:1825740 - chętnie pomogę.

Pozdrawiam
Go to the top of the page
+Quote Post
--michu--
post
Post #4





Goście







DALEJ NIESTEY IMPORTOWANY OBRAZEK MA BIALE TLO (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

  1. <?php
  2.  
  3.  
  4. $width = 200;
  5. $height = 200;
  6.  
  7.  
  8. header("Content-type: image/png");
  9.  
  10. $image = imagecreate( $width, $height );
  11.  
  12.  
  13. $blue_bok = imagecolorallocate($image, 59,154,220 );
  14. imagefilledrectangle($image, 0, 0, 200, 200, $blue_bok);
  15.  
  16. $ramka = imagecreatefrompng("g.png");
  17. imagefilledrectangle($ramka,0,0,200,200,imagecolorallocatealpha($ramka,255,255,255,255));
  18. imagecopy($image, $ramka, 10, 10, 0, 0, 116, 116);
  19.  
  20. imagepng($image);
  21.  
  22.  
  23. ?>
Go to the top of the page
+Quote Post
andrzejmarek
post
Post #5





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 18.02.2005
Skąd: Katowice

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


Żeby mieć kanał alpha musisz używać imagecreatetruecolor.

Sposób z wypełnianiem kanałem alpha dotyczy sytuacji, gdybyś chciał mieć obrazek wynikowy z przeźroczystym tłem - czyli to co ci podałem wcześniej wrzucasz zamiast tego niebieskiego koloru.

Pozdrawiam

  1. <?php
  2.  
  3.  
  4. $width = 200;
  5. $height = 200;
  6.  
  7.  
  8. header("Content-type: image/png");
  9.  
  10. $image = imagecreatetruecolor( $width, $height );
  11.  
  12.  
  13. $blue_bok = imagecolorallocate($image, 59,154,220 );
  14. imagefilledrectangle($image, 0, 0, 200, 200, $blue_bok);
  15.  
  16. $ramka = imagecreatefrompng("g.png");
  17. imagecopy($image, $ramka, 10, 10, 0, 0, 116, 116);
  18.  
  19. imagepng($image);
  20.  
  21.  
  22. ?>
Go to the top of the page
+Quote Post
--michu--
post
Post #6





Goście







andrzejmarek - jestes wspaniały! dziki wielkie!
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 20:29