Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][GD] Tworzenie pliku PNG z przezroczystym tłem
sweter
post 10.02.2012, 20:38:04
Post #1





Grupa: Zarejestrowani
Postów: 623
Pomógł: 11
Dołączył: 1.01.2009
Skąd: Wrocław

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


Witam,
mam za zadanie w GD (koniecznie w GD - ImageMagick odpada) utworzyć przezroczysty obrazek png, na który nałożę pewną grafikę JPG, tak że po bokach zostanie przezroczysta przestrzeń.
Czy za pomocą GD można coś takiego zrobić?
Dotychczas używałem funkcji imagetruecolor() - ta jednak tworzy czarne tło.
Czy istnieje jakiś prosty sposób na obejście tego problemu? Przeszukałem Google i nic ciekawego nie znalazłem. Może to jest niewykonalne w GD?
Pozdrawiam


--------------------
Go to the top of the page
+Quote Post
Kshyhoo
post 10.02.2012, 20:41:38
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




imagealphablending
imagesavealpha


--------------------
Go to the top of the page
+Quote Post
sweter
post 11.02.2012, 09:39:00
Post #3





Grupa: Zarejestrowani
Postów: 623
Pomógł: 11
Dołączył: 1.01.2009
Skąd: Wrocław

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


Hmm... Użyłem tych funkcji
  1. $im = imagecreatetruecolor(100, 100);
  2.  
  3. imagealphablending($im, false);
  4. imagesavealpha($im, true);
  5.  
  6. header('Content-type: image/png');
  7.  
  8. imagepng($im);

ale nadal pokazuje mi się w przeglądarce czarny kwadrat

Ten post edytował sweter 11.02.2012, 09:39:12


--------------------
Go to the top of the page
+Quote Post
Kshyhoo
post 11.02.2012, 09:55:56
Post #4





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Może tak:
  1. // tu ew. otwarcie z pliku
  2. $imgX = imagecreatetruecolor(200, 200);
  3. imagealphablending($imgX, false);
  4. imagesavealpha($imgX, true);
  5.  
  6. // tu dalsze operacje na obrazku
  7.  
  8. // zapis obrazka i przesłanie do przeglądarki
  9. header("Content-Type: image/png");
  10. imagealphablending($imgX, false);
  11. imagesavealpha($imgX, true);
  12. imagepng($imgX, NULL);
  13. imagepng($imgX, "$name.png");
  14. chmod("$name.png", 0666);
  15.  
  16. // zwolnienie pamięci
  17. imagedestroy($img1);

Jak widać, funkcje zostały użyte dwukrotnie... przy tworzeniu i przy zapisie osobno.


--------------------
Go to the top of the page
+Quote Post
sweter
post 11.02.2012, 10:06:50
Post #5





Grupa: Zarejestrowani
Postów: 623
Pomógł: 11
Dołączył: 1.01.2009
Skąd: Wrocław

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


Niestety Twój kod również tworzy mi czarny obrazek sad.gif


--------------------
Go to the top of the page
+Quote Post
Kshyhoo
post 11.02.2012, 10:12:47
Post #6





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Mój kod to przykład, sam musisz dopasować go do swoich potrzeb. Spróbuj użyć funkcji tak:
  1. imagecolortransparent($img,imagecolorexact($img,0,0,0));
  2. imagealphablending($img, false);
  3. imagesavealpha($img, true);


--------------------
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: 15.07.2025 - 20:00