Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP jak poprawnie nałożyć na siebie obrazki i zachować transparencje?
Forum PHP.pl > Forum > PHP
Avatarus
Witam
Mam 2 obrazki
1: duży tzn Ramka, jest w formie png z transparencją
2: mniejszy tzn logo, jest w różnych formatach png/jpg/gif

chciałbym za pomocą php nałożyć je na siebie ale tak żeby wynikiem był plik png z zachowaniem transparencji.
Jak mogę to zrobić.
Próbuję takim kodem:
  1. function generuj_obrazek($obrazek,$typ,$id)
  2. {
  3. echo '<pre>';
  4. print_r($_POST);
  5. echo '</pre>';
  6.  
  7.  
  8. $targ_w = 298;
  9. $targ_h = 55;
  10. $jpeg_quality = 90;
  11. $fotoW = 326;
  12. $fotoH = 75;
  13. $logoW = 298;
  14. $logoH = 55;
  15. $output_filename='obrazki/newsy/'.$obrazek;
  16. $src = 'obrazki/newsy/tmp/'.$obrazek;
  17. if ($typ=='.jpg') $img_r = imagecreatefromjpeg($src);
  18. elseif ($typ=='.png') $img_r = imagecreatefrompng($src);
  19. elseif ($typ=='.gif') $img_r = imagecreatefromgif($src);
  20.  
  21. $dst_r = ImageCreateTrueColor( $targ_w, $targ_h );
  22.  
  23. imagecopyresampled($dst_r,$img_r,0,0,$_POST['x'],$_POST['y'],$targ_w,$targ_h,$_POST['w'],$_POST['h']);
  24. if ($typ=='.jpg') imagejpeg($dst_r, $output_filename, $jpeg_quality);
  25. elseif ($typ=='.gif') imagegif($dst_r, $output_filename );
  26. elseif ($typ=='.png') imagepng($dst_r, $output_filename );
  27.  
  28.  
  29. /////////////////////////////////////////////////////////////////
  30. //plik utworzony, można nakładać.
  31.  
  32.  
  33. $ramka_file='admin/news/ramki/'.$_POST[kolor].'.png';
  34. $targetfile='obrazki/newsy/mini_'.$id.$typ;
  35. $ramka= imagecreatefrompng($ramka_file);
  36. if ($typ=='.jpg') $img_r = imagecreatefromjpeg($output_filename);
  37. elseif ($typ=='.png') $img_r = imagecreatefrompng($output_filename);
  38. elseif ($typ=='.gif') $img_r = imagecreatefromgif($output_filename);
  39. $photoFrame = imagecreatetruecolor($fotoW,$fotoH);
  40. setTransparency($ramka,$photoFrame);
  41. $dest_x = $fotoW - 312;
  42. $dest_y = $fotoH -65;
  43. imagecopyresampled($photoFrame, $ramka, 0, 0, 0, 0, $fotoW, $fotoH, $fotoW, $fotoH);
  44. imagecopy($photoFrame, $img_r, $dest_x, $dest_y, 0, 0, $logoW, $logoH);
  45. imagepng($photoFrame, $targetfile);


ale nie zapisuje transparencji
Kshyhoo
Przykład kodu, kombinuj:
  1. $img1 = imagecreatefrompng("$obraz1");
  2.  
  3. $imgX = imagecreatetruecolor(200, 200);
  4. imagealphablending($img2, false);
  5. imagesavealpha($img2, true);
  6.  
  7. //...
  8.  
  9. header("Content-Type: image/png");
  10. imagealphablending($img2, false);
  11. imagesavealpha($img2, true);
  12. imagepng($img2, NULL);
  13. imagepng($img2, "../tymcz/$name.k2.png");
  14. chmod("../tymcz/$name.k2.png", 0666);
  15.  
  16. imagedestroy($img1);
  17. imagedestroy($img2);

Po za tym, było na forum wiele razy, wiec kłania się szukajka...
Avatarus
no tak, dzięki działa to
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.