Hola.
Estoy creando una redimensión de imágenes por si un usuario las sube a un alto o ancho demasiado grande y que se adapte a uno estandar establecido. Por ahora todo va bien sin embargo me gustaría crear un fondo blanco o transparente cuando las imágenes sean con un ancho menor al estandar y no en negro como sale ahora.
Lo he intentando añadiendo al siguiente código por ejemplo imagecolorallocate e imagefill y alguno que otro pero o sigue igual o reemplaza a la imagen a subir y se ve todo blanco:
El código que tengo normal hasta ahora sin lo anterior es el siguiente:
Código PHP:
Ver original//para saber si la imagen tiene el ancho correcto que es de 420px y alto correcto de 315px
$ancho_img = $tamano_img[0];
$alto_img = $tamano_img[1];
$ancho_img_deseado = 420;
$alto_img_deseado = 315;
//Si el ancho de la imagen es mayor que el deseado o el alto de la imagen es mayor que el deseado
if($alto_img>$alto_img_deseado || $ancho_img>$ancho_img_deseado){
//Compruebo si el alto de la imagen es mayor que el ancho lo reajusto sobre el alto.
if($ancho_img<$alto_img){
//Por una regla de 3 obtengo el ancho de la imagen de manera proporcional al alto nuevo que será de 315
$nuevo_alto_img = $alto_img_deseado;
$nuevo_ancho_img = ($ancho_img/$alto_img)*$nuevo_alto_img;
$ancho_final_img = 420;
//$img_reajustada = imagecreatetruecolor($nuevo_ancho_img,$nuevo_alto_img);
}
//Fin Compruebo si el alto de la imagen es mayor que el ancho lo reajusto sobre el alto.
//Si el ancho de la imagen es mayor que 420px, reajusto su tamaño
else{
//if($ancho_img>$ancho_img_deseado){
//Por una regla de 3 obtengo el alto de la imagen de manera proporcional al ancho nuevo que será de 420
$nuevo_ancho_img = $ancho_img_deseado;
$nuevo_alto_img = ($alto_img/$ancho_img)*$nuevo_ancho_img;
}
//Creo una nueva imagen basada en la original, dependiendo de su extensión es el tipo que crearé.
switch ($extension) {
case '.jpg':
//$nuevo_ancho_img = 236;
$origenX = ($ancho_img_deseado - $nuevo_ancho_img)/2;
imagecopyresampled($img_reajustada, $img_original, $origenX, 0, 0, 0, $nuevo_ancho_img, $nuevo_alto_img, $ancho_img, $alto_img); //Guardo la imagen reescalada en el servidor
$nombre_img_ext = "../img/".$email.$extension;
$nombre_img = "../img/".$email;
imagejpeg($img_reajustada,$nombre_img_ext,100); break
}
El código sigue pero lo dejo hasta esa parque que es justo ahí dentro del switch donde tengo que aplicar lo nuevo o anterior pero por ahora no encuentro la manera.
¿Alguna idea o cambio? Saludos.