Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Przeźroczyste tło dla PNG24 przy uzyciu GD, funkcja imagecopy
--michu--
post 30.01.2008, 13:39:14
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
Kihol
post 1.02.2008, 12:17:47
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 1.02.2008, 19:10:29
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 1.02.2008, 22:26:39
Post #4





Goście







DALEJ NIESTEY IMPORTOWANY OBRAZEK MA BIALE TLO 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 2.02.2008, 08:54:09
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 2.02.2008, 09:21:47
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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.07.2025 - 10:12