Hola, con el sistema en php que estoy haciendo, en la parte en la que trabajo ahora, tomo una imagen guardada en el servidor (jpg, gif o png) y aparece en una pagina donde el usuario la puede recortar (CROP), el recorte funciona tomando esa imagen y haciendo una nueva pero desde ciertas coordenadas.
Todo funciona normal y excelente cuando elijo imagenes JPG o GIF. Pero cuando elijo una imagen con formato PNG (tenga o no tenga fondo), el resultado del recorte siempre es una imagen negra, nada mas.
Les dejo la parte del código que hace la nueva imagen, porque estoy casi seguro de que ahí está el error, a la hora de hacer
imagepng Código PHP:
$targ_w = $targ_h = 150;
$jpeg_quality = 90;
$src = (direccion de la foto);
$ext = (extension de la foto);
$_SESSION['Photo']=(nombre de la foto con su extension)
switch ($ext)
{case "gif": // gif -> jpg
$img_r = imagecreatefromgif($src);
break;
case "jpg" || "jpeg": // jpeg -> jpg
$img_r = imagecreatefromjpeg($src);
break;
case "png": // png -> jpg
$img_r = imagecreatefrompng($src);
break;
}
$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']);
switch ($ext)
{case "gif": // gif -> jpg
imagegif($dst_r,'img/'.$_SESSION['Photo']);
break;
case "jpg" || "jpeg": // jpeg -> jpg
imagejpeg($dst_r,'img/'.$_SESSION['Photo']);
break;
case "png": // png -> jpg
imagepng($dst_r,'img/'.$_SESSION['Photo']);
break;
}