Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nakładanie grafiki transparentnej, Problem z uzyciem biblioteki GD
macdavido
post
Post #1





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 10.03.2006
Skąd: Warszawa

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


Witajcie,
przeszukalem cale forum i od razu na wstepie zaznaczam ze sprobowalem wszystkiego. Niestety za nic nie moge nalozyc, transparentnego pliku PNG (z tonowana przezroczystoscia, tzn. nie tylko jeden kolor jest przezroczysty, inne tez w odpowiednim nasyceniu alpha, poprostu zwykla grafika png-24bit). Zapoznalem sie mocno szczegolowo rowniez z opisami na php.net dotyczacymi biblioteki. Problem chyba mnie przerosl. Tak wiec oto kod:

  1. <?php
  2. header('Content-Type: image/png');
  3.    
  4. // tutaj pobieram plik do zaladowania z dysku na serwer
  5.  
  6. $sourcefile = $_FILES['plik_z_formularza']['tmp_name'];
  7. $destImage = imagecreatefromjpeg( $sourcefile );
  8.  
  9. // pobieram plik maski PNG, bedacy na serwerze strony 'images/maska.png'
  10. // jest to swego rodzaju nadpalona ramka ktora ma zostac nalozona na obrazek
  11.  
  12. $png = imagecreatefrompng( "images/maska.png" );
  13.  
  14. // kiedy plik png nie bedzie mial transparencji tylko, np. splaszczony z bielą - to jesli
  15. // odblokuje linie ponizej. Transparencja dziala ale tylko na jeden kolor, tam gdzie
  16. // juz jest inny oczywiscie nie dziala... tak nie chce, gdyz chodzi o nalozenie pelnego
  17. // tonowanego transparentnie obrazka png-24bit na inny, zwykly jpeg
  18. //
  19. // imagecolortransparent($png, imagecolorallocate($png, 255, 255, 255));
  20.    
  21. // tutaj miksuje obie grafiki (na razie z przesunieciem o 320 pixeli w prawo aby widziec
  22. // w polowie oryginalny podklad i druga polowe po nalozeniu
  23.  
  24. imagecopymerge( $destImage, $png, 320, 0, 0, 0, 640, 320, 100 );
  25.  
  26. // wyswietlam
  27.  
  28. imagepng($destImage);
  29. ?>


Efekt niestety jest taki - jesli nie odblokowac tej jednej linii powyzej - ze serwer miksuje mi grafike PNG z obrazkiem w $destImage w jakis chory sposob. Ta ramka ktora wsrodku ma transparencje zawiera zniszczone zdjecie nie wystepujacewogole na serwerze! Czyli widac ze pobiera PNG z transparencja ale w jakis chory sposob wypelnia ja czymkolwiek (nie wiem skad przy okazji to bierze, naprawde tego zdjecia nie ma tam fizycznie).

Jesli splaszcze PNG i bedzie mial poprostu biel w wiekszej swojej czesci, to po odblokowaniu tej jednej linijki powyzej z funkcja imagecolortransparent, definiuje przezroczystosc dla bieli tego obrazka (zachowanie jak z gifem) wtedy obrazek faktycznie sie naklada i jakos to jest. Niestety nie tak bym chcial bo takie nalozenie na ostro nie wyglada dobrze.

Spedzilem juz kilka godzin wertujac forum, opisy, rozne przyklady i nic (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
juz brak mi pomyslow

Chodzi o prosta rzecz: na obrazek Jpeg ladowany z dysku na serwer chce w locie nalozyc plik PNG-24bit z przezroczystoscia tonowana. Swego rodzaju nadpalona ramka do okoloa. No i tu totalne schodzi

Dzieki wielkie za konstruktywne rady i blagam, juz nie linki do php.net czy cos takiego. Naprawde zapoznalem sie z tym wszystkim i potrzebuje wsparcia z kodem.
Go to the top of the page
+Quote Post

Posty w temacie


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: 15.10.2025 - 09:06