Me pongo en contacto con vosotros para ver si alguien me puede echar una manita.
Resulta que tengo que crear una imagen png (a ser posible con transparencia, aunque también me vale con fondo blanco).
Tengo una clase creada, que reconoce el tipo de archivo que me han pasado y genero el png a partir de él.
El problema es que cuando le he pasado un png que tiene fondo transparente no me funciona correctamente.
Si le paso un jpg o el png que no tenga capas, funciona bien.
Pero si le paso un png que tenga capas, no me redimensiona correctamente la imagen.
Os pego el código:
Código PHP :
public function resize_new_width_transparence($img_base, $nueva_img, $nuevo_width, $nuevo_height, $tipo) { list($width_viejo, $height_viejo) = getimagesize($img_base); $ratio = 1; if ($height_viejo != 0) { $ratio = $width_viejo / $height_viejo; $this->view->firebug($ratio); } if( $ratio > 1) { $width = $nuevo_width; $height = $nuevo_width / $ratio; $x_destino = 0; $y_destino = ($nuevo_height - $height) / 2; $this->view->firebug($y_destino); } else { $width = $nuevo_height * $ratio; $height = $nuevo_height; $x_destino = ($nuevo_width - $width) / 2; $y_destino = 0; } if ($tipo == '.jpeg' || $tipo == '.jpg') { $aux = imagecreatefromjpeg($img_base); } elseif ($tipo == '.gif') { $aux = imagecreatefromgif($img_base); } elseif ($tipo == '.png') { $aux = imagecreatefrompng($img_base); } $create_true_colors = imagecreatetruecolor($nuevo_width, $nuevo_height); imageantialias($create_true_colors, true); imagealphablending($create_true_colors, false); $transparency = imagecolorallocatealpha($create_true_colors, 255, 255, 255, 127); imagefill($create_true_colors, 0, 0, $transparency); imagecopyresampled($create_true_colors, $aux, $x_destino, $y_destino, 0, 0, $width, $height, $width_viejo, $height_viejo); imagesavealpha($create_true_colors, false); imagepng($create_true_colors, $nueva_img); }
Si necesitáis que os cuente alguna cosa más me lo decís y os la comento.
Muchas gracias de antemano.
Un saludo,
Fran.