Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problemy z przezroczystoscią w GD
Forum PHP.pl > Forum > Przedszkole
a79rtur
mam nastepujacą funkcje, ma ona za zadanie dodać przezroczysty prostokąt z napisem (trutypami zrobionym) także przezroczystym do obrazka, jak argument przyjmuje ona wskaznik do obrazu GD utworzonego funkcją imagecreatefromjpeg/gif/png
  1. <?php
  2.  
  3. function sygnaturka($img)
  4. {
  5. // definicja kolorow
  6. ImageAlphaBlending($img, true);
  7. $white = imagecolorallocatealpha($img, 255,255,255,50);
  8. $blue = imagecolorallocatealpha($img, 0,0,255,70);
  9. $black = imagecolorallocatealpha($img, 0,0,0,50);
  10.  
  11. imagefilledrectangle($img, 0, 5, 250, 25, $blue);
  12.  
  13. $font=&#092;"ariblk.ttf\";
  14. $text=&#092;"jakistam napis\";
  15. imagettftext($img, 10, 0, 10, 20, $white, $font, $text); 
  16.  
  17. }
  18.  
  19. ?>


wszystko fajnie działa ale tylko dla obrazów utworzonych funkcją imagecreatefromjpeg , dla gif i png prostokąt jak i napis nie sa przeźroczyste.
czemu to tak ?
lajzy
  1. <?php
  2.  
  3. function sygnaturka($img)
  4. {
  5. // definicja kolorow
  6. ImageAlphaBlending($img, true);
  7. $white = imagecolorallocatealpha($img, 255,255,255,50);
  8. $blue = imagecolorallocatealpha($img, 0,0,255,70);
  9. $black = imagecolorallocatealpha($img, 0,0,0,50);
  10.  
  11. imagesetthickness(imagefilledrectangle($img, 0, 5, 250, 25, $blue));
  12.  
  13. $font=&#092;"ariblk.ttf\";
  14. $text=&#092;"jakistam \";
  15. imagecopyresampled($img)
  16.  imagettftext($img, 10, 0, 10, 20, $white, $font, $text);
  17. $c1 = imagecolorsforindex($src_img, imagecolorat($src_img, $siX, $siY2));
  18.  $c2 = imagecolorsforindex($src_img, imagecolorat($src_img, $siX, $siY));
  19.  $c3 = imagecolorsforindex($src_img, imagecolorat($src_img, $siX2, $siY2));
  20.  $c4 = imagecolorsforindex($src_img, imagecolorat($src_img, $siX2, $siY));
  21.  
  22.  $r = ($c1['red'] + $c2['red'] + $c3['red'] + $c4['red'] ) << 14;
  23.  $g = ($c1['green'] + $c2['green'] + $c3['green'] + $c4['green']) << 6;
  24.  $b = ($c1['blue'] + $c2['blue'] + $c3['blue'] + $c4['blue'] ) >> 2;
  25.  
  26.  imagesetpixel($dst_img, $dst_x + $x - $src_x, $dst_y + $y - $src_y, $r+$g+$b);
  27.  
  28. }
  29.  
  30. ?>


ja bym to zroboł tak
a79rtur
imagecopyresampled($img) - tu chyba cos nie tak
moglbys napisac mniej wiecej co ta funkcja robi i jakie ma argumenty? bo tam namieszane troche z tymi $img, $src_img, $dst_img .
crash
Przecież to jest w manualu dobrze opisane... $src_img zasób wejsciowy otwarty przez np imagecreatefrompng, $dsc_img zasób wyjściowy otwarty przez np. imagecreate. Reszta chyba jasna, początkowe/końcowe współrzędne X/Y
a79rtur
dzieki za odpowiedzi, pokombinowałem i teraz działa ok. moze sie komuś przyda :
  1. <?php
  2.  
  3. function sygnaturka($obrazek_img)
  4. {
  5. global $width,$height;
  6. $dst_img=ImageCreateTrueColor($width,$height); 
  7. ImageCopyResampled($dst_img,&$obrazek_img,0,0,0,0,$width,$height,$width,$height);
  8.  
  9. // definicja kolorow
  10. ImageAlphaBlending($dst_img, true);
  11. $white = imagecolorallocatealpha($dst_img, 255,255,255,50);
  12. $blue = imagecolorallocatealpha($dst_img, 0,0,255,70);
  13. $black = imagecolorallocatealpha($dst_img, 0,0,0,50);
  14.  
  15. imagefilledrectangle($dst_img, 0, 5, 250, 25, $blue);
  16.  
  17. // tworze tekst, ktory bedzie na prostokacie
  18.  
  19. $font=&#092;"ariblk.ttf\";
  20. $text=&#092;"tekst jakis \";
  21. imagettftext($dst_img, 10, 0, 10, 20, $white, $font, $text); 
  22.  
  23. return $dst_img;
  24. ImageDestroy($dst_img);
  25. }
  26.  
  27. ?>

wywolanie
$img_z_sygnaturka=sygnaturka($img_bez_sygnaturki);
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.