Código de PHP - Redimensionar imagen JPG, PNG o GIF

Versión 1 - solo jpg
estrellaestrellaestrellaestrellaestrella(14)

Actualizado el 19 de Septiembre del 2018 (Publicado el 20 de Mayo del 2004)gráfica de visualizaciones de la versión: Versión 1 - solo jpg
57.399 visualizaciones desde el 20 de Mayo del 2004

Versión 2 - formato jpg, gif y png
estrellaestrellaestrellaestrellaestrella(3)

Publicado el 19 de Septiembre del 2018gráfica de visualizaciones de la versión: Versión 2 - formato jpg, gif y png
19.615 visualizaciones desde el 19 de Septiembre del 2018
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

Esta nueva versión, redimensiona cualquier tipo de imagen.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
$origen="img/imagen.jpg";
$destino="img/nuevaimagen.jpg";
$destino_temporal=tempnam("tmp/","tmp");
if(redimensionarImagen($origen, $destino_temporal, 300, 350, 100))
{
    // guardamos la imagen redimensionada
    $fp=fopen($destino,"w");
    fputs($fp,fread(fopen($destino_temporal,"r"),filesize($destino_temporal)));
    fclose($fp);
 
    // mostramos la imagen
    echo "<img src='img/nuevaimagen.jpg'>";
}else{
    // la imagen original es mas pequeña que el tamaño destino
    echo "<img src='img/imagen.jpg'>";
}
 
/**
 * Funcion para redimensionar imagenes
 *
 * @param string $origin Imagen origen en el disco duro ($_FILES["image1"]["tmp_name"])
 * @param string $destino Imagen destino en el disco duro ($destino=tempnam("tmp/","tmp");)
 * @param integer $newWidth Anchura máxima de la nueva imagen
 * @param integer $newHeight Altura máxima de la nueva imagen
 * @param integer $jpgQuality (opcional) Calidad para la imagen jpg
 * @return boolean true = Se ha redimensionada|false = La imagen es mas pequeña que el nuevo tamaño
 */
function redimensionarImagen($origin,$destino,$newWidth,$newHeight,$jpgQuality=100)
{
    // getimagesize devuelve un array con: anchura,altura,tipo,cadena de 
    // texto con el valor correcto height="yyy" width="xxx"
    $datos=getimagesize($origin);
 
    // comprobamos que la imagen sea superior a los tamaños de la nueva imagen
    if($datos[0]>$newWidth || $datos[1]>$newHeight)
    {
 
        // creamos una nueva imagen desde el original dependiendo del tipo
        if($datos[2]==1)
            $img=imagecreatefromgif($origin);
        if($datos[2]==2)
            $img=imagecreatefromjpeg($origin);
        if($datos[2]==3)
            $img=imagecreatefrompng($origin);
 
        // Redimensionamos proporcionalmente
        if(rad2deg(atan($datos[0]/$datos[1]))>rad2deg(atan($newWidth/$newHeight)))
        {
            $anchura=$newWidth;
            $altura=round(($datos[1]*$newWidth)/$datos[0]);
        }else{
            $altura=$newHeight;
            $anchura=round(($datos[0]*$newHeight)/$datos[1]);
        }
 
        // creamos la imagen nueva
        $newImage = imagecreatetruecolor($anchura,$altura);
 
        // redimensiona la imagen original copiandola en la imagen
        imagecopyresampled($newImage, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]);
 
        // guardar la nueva imagen redimensionada donde indicia $destino
        if($datos[2]==1)
            imagegif($newImage,$destino);
        if($datos[2]==2)
            imagejpeg($newImage,$destino,$jpgQuality);
        if($datos[2]==3)
            imagepng($newImage,$destino);
 
        // eliminamos la imagen temporal
        imagedestroy($newImage);
 
        return true;
    }
    return false;
}



Comentarios sobre la versión: Versión 2 - formato jpg, gif y png (3)

Imágen de perfil
26 de Septiembre del 2018
estrellaestrellaestrellaestrellaestrella
getimagesize tiene un bug que devuelve cambiados ancho y alto si la imagen es portrait, por lo que el código, muy bueno por cierto, solo funcionará con imágenes apaisadas.
Responder
Jose Zarate
4 de Diciembre del 2018
estrellaestrellaestrellaestrellaestrella
Guillermo, primero puedes detectar la posicion de la imagen luego la rotas y cuando este correcta ejecutas este codigo: https://www.imaginanet.com/blog/detectar-la-orientacion-de-una-foto-con-php.html
Responder
abelardo
28 de Octubre del 2019
estrellaestrellaestrellaestrellaestrella
muchas gracias
Responder

Comentar la versión: Versión 2 - formato jpg, gif y png

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s1051