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:
function generuj_obrazek($obrazek,$typ,$id) { $targ_w = 298; $targ_h = 55; $jpeg_quality = 90; $fotoW = 326; $fotoH = 75; $logoW = 298; $logoH = 55; $output_filename='obrazki/newsy/'.$obrazek; $src = 'obrazki/newsy/tmp/'.$obrazek; if ($typ=='.jpg') $img_r = imagecreatefromjpeg($src); elseif ($typ=='.png') $img_r = imagecreatefrompng($src); elseif ($typ=='.gif') $img_r = imagecreatefromgif($src); $dst_r = ImageCreateTrueColor( $targ_w, $targ_h ); imagecopyresampled($dst_r,$img_r,0,0,$_POST['x'],$_POST['y'],$targ_w,$targ_h,$_POST['w'],$_POST['h']); if ($typ=='.jpg') imagejpeg($dst_r, $output_filename, $jpeg_quality); elseif ($typ=='.gif') imagegif($dst_r, $output_filename ); elseif ($typ=='.png') imagepng($dst_r, $output_filename ); ///////////////////////////////////////////////////////////////// //plik utworzony, można nakładać. $ramka_file='admin/news/ramki/'.$_POST[kolor].'.png'; $targetfile='obrazki/newsy/mini_'.$id.$typ; $ramka= imagecreatefrompng($ramka_file); if ($typ=='.jpg') $img_r = imagecreatefromjpeg($output_filename); elseif ($typ=='.png') $img_r = imagecreatefrompng($output_filename); elseif ($typ=='.gif') $img_r = imagecreatefromgif($output_filename); $photoFrame = imagecreatetruecolor($fotoW,$fotoH); setTransparency($ramka,$photoFrame); $dest_x = $fotoW - 312; $dest_y = $fotoH -65; imagecopyresampled($photoFrame, $ramka, 0, 0, 0, 0, $fotoW, $fotoH, $fotoW, $fotoH); imagecopy($photoFrame, $img_r, $dest_x, $dest_y, 0, 0, $logoW, $logoH); imagepng($photoFrame, $targetfile);
ale nie zapisuje transparencji