entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Redimensionar imagen con un alto fijo

Estoy mirando por internet y encontrado varios ejemplos de como redimensionar una imagen, pero no se como redimensionar una imagen dándole un alto fijo y que el ancho se adapte proporcionalmente a ese alto.

Pensé que seria algo fácil obteniendo el tamaño con getimagesize y con imagescale determinar el alto, penque que te calculaba el ancho automáticamente.

A ver si me podeís echar una mano, gracias

1 Respuesta

3votos

jorge98 Puntos1610

De esta manera lo logre yo... haciendo una regla de 3

$nombre_fichero = 'imagen.jpg';

list($ancho_or, $alto_or) = getimagesize($nombre_fichero);

$ancho1 = 500 * $ancho_or;

$ancho = $ancho1 / $alto_or;

$alto = 500;

$thumb = imagecreatetruecolor($ancho, $alto);
$origen = @imagecreatefromjpeg($nombre_fichero);
$fondo = imagecolorallocate($thumb, 255, 255, 255);
imagefilledrectangle($thumb, 0, 0, $alto_or, $ancho_or, $fondo);
if(!$origen){
$origen = imagecreatefrompng($nombre_fichero);
}

if(!$origen){
$origen = imagecreatefromgif($nombre_fichero);
}

imagecopyresampled($thumb, $origen, 0, 0, 0, 0, $ancho, $alto, $ancho_or, $alto_or);

imagejpeg($thumb,'imagen-imprimida.jpg',72);

El alto de la imagen se redimensionaria a 500 pixeles y el ancho se adapta proporcionalmente al alto de la imagen según las dimensiones originales.

1voto

bichomen comentado

Gracias, lo modifique y cree una función:

function redimensionar($pathorigen,$pathdestino) {
        list($ancho_or, $alto_or) = getimagesize($pathorigen);  

        $ancho1 = 100 * $ancho_or;
        $ancho = $ancho1 / $alto_or;

        $alto = 100;

        $thumb = imagecreatetruecolor($ancho, $alto);       
        $fondo = imagecolorallocate($thumb, 255, 255, 255);
        imagefilledrectangle($thumb, 0, 0, $alto_or, $ancho_or, $fondo);

        $extension =  substr($pathorigen,-3);

        if ($extension == "jpg" || $extension == "peg") {       
            $origen = imagecreatefromjpeg($pathorigen);

            imagecopyresampled($thumb, $origen, 0, 0, 0, 0, $ancho, $alto, $ancho_or, $alto_or);
            imagejpeg($thumb,$pathdestino,72);  
        }
        else if ($extension == "png") { 
            $origen = imagecreatefrompng($pathorigen);

            imagecopyresampled($thumb, $origen, 0, 0, 0, 0, $ancho, $alto, $ancho_or, $alto_or);
            imagepng($thumb,$pathdestino,6);    
        }
        else if ($extension == "gif") {     
            $origen = imagecreatefromgif($pathorigen);

            imagecopyresampled($thumb, $origen, 0, 0, 0, 0, $ancho, $alto, $ancho_or, $alto_or);
            imagegif($thumb,$pathdestino);              
        }
        imagedestroy($thumb);
    }       

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta