Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nakładanie grafiki transparentnej, Problem z uzyciem biblioteki GD
macdavido
post 19.02.2009, 15:51:43
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 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.


--------------------
MacOS X 10.5 Leopard @ MacPro G5 Xeon 2xQuadCore 3GHz... "tutaj nie brak odpowiedzi"
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
maly_swd
post 19.02.2009, 17:44:11
Post #2





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

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


// tworzymy pusty obrazek o wymiarach x y
$button=imagecreatetruecolor($x, $y);

// wylaczamy tryb alfa
imagealphablending($button, false);

// ustawiamy kolor alfa
$trans = imagecolorallocatealpha($button, 128, 128, 128,127);

//wypelniamy kolorem alfa
imagefill($button, 0, 0, $trans);

//zapisujemy alfa
imagesavealpha($button, true);
// wlaczamy alfa:)
imagealphablending($button, true);


.....
teraz mozesz dalej wklejac to co chciales

pozdrawiam


--------------------
śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu..
Go to the top of the page
+Quote Post
macdavido
post 20.02.2009, 12:38:47
Post #3





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

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


Serdecznie dziekuje za wsparcie

Powyzsza pomoc zakonczona sukcesem biggrin.gif

Troche to dla mnie bylo dziwne tu wylaczyc potem znowu wlaczyc jakies dziwaczne mieszanie z tym GD. Ale udalo sie.

Teraz doinstaluje FreeType Library i bedzie mozna dopisywac cos wlasna czcionka smile.gif extra!

Dzieki smile.gif


--------------------
MacOS X 10.5 Leopard @ MacPro G5 Xeon 2xQuadCore 3GHz... "tutaj nie brak odpowiedzi"
Go to the top of the page
+Quote Post
maly_swd
post 20.02.2009, 22:32:49
Post #4





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

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


W phpGD chyba da sie pisac TTFami bez istalacji modulu (ale byc moze sie myle).
Wystarczy wgrac plik ttf na server podac lokalizacje:
$font = realpath("/www/htdocs/xxxxxl/ttf/verdanab.ttf");

imagettftext($button, 8, 0, 10, 14-(20-$y)/2, $textColor , $font, $text); /*textsize 8*/

podane wartosci to moje od systemu do generowania buttona;)


--------------------
śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu..
Go to the top of the page
+Quote Post
macdavido
post 26.02.2009, 12:06:05
Post #5





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

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


Cytat(maly_swd @ 20.02.2009, 22:32:49 ) *
W phpGD chyba da sie pisac TTFami bez istalacji modulu (ale byc moze sie myle).


Biblioteka ta jest wymagana, manual rowniez o tym mowi.
Byc moze masz ja poprostu zainstalowana.

Powyzsza pomoc okazala sie super i do tego pomoze mi ogolnie z przezroczystosciami i cala reszta. Teraz doinstalowalem FreeType'a i juz wogole zaczela sie bajka smile.gif rewelacyjne mozliwosci. Mozna bezbolesnie uzywac funkcji do ttfow i ogolnie miec je na stronie smile.gif


--------------------
MacOS X 10.5 Leopard @ MacPro G5 Xeon 2xQuadCore 3GHz... "tutaj nie brak odpowiedzi"
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: 19.07.2025 - 09:34