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:
Código PHP:
Ver original
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; 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.