sábado, 9 de mayo de 2020

PHP REDUCIR IMAGEN

Mediante este simple script logro la reducción de la imagen.
Lo puedo aplicar comprobando la altura o el ancho de la imagen, nos serviría en los dos casos.
$ancho y $alto son los valores reales de la imagen.
$ext la extensión de la misma.
Nos servira si la imagen es jpg, png, jpeg.

Los valores de la imagen los obtengo de la siguiente manera:

        global $ancho;
        global $alto;
        list($ancho, $alto, $tipo, $atributos) = getimagesize("temp/img.".$_SESSION['imgext']);

        global $anchomax;
        $anchomax = 900;
        global $altomax;
        $altomax = 900;
En el caso de que el ancho sea mayor que le premitido:

    if($ancho > $anchomax){ ......   

    // La diferencia entre ancho real y permitido   
    global $anchodif;
    $anchodif = ($ancho - $anchomax);
   
    // Calculo el % de reducción en cualquier caso para que la imagen no se deforme
    global $porcent;
    $porcent = round((($anchodif * 100)/$ancho),2);

    // El nuevo ancho es el real menos la diferencia
    global $anchonew;
    $anchonew = ($ancho - $anchodif);
   
    //El nuevo alto será el alto real menos el % correspondiente
    global $altonew;
    $altonew = ($alto - (($alto * $porcent)/100));
    $altonew = round($altonew,0);

En el caso del alto sería similar, manteniendo la proporción del ancho.

    if($alto > $altomax){ ......

    global $altomax;
    $altomax = 900;

    global $altodif;
    $altodif = ($alto - $altomax);
    global $porcent;
    $porcent = round((($altodif * 100)/$alto),2);
    global $altonew;
    $altonew = ($alto - $altodif);

    global $anchonew;
    $anchonew = ($ancho - (($ancho * $porcent)/100));
    $anchonew = round($anchonew,0);

De esta forma tenemos todos los valores necesarios para reducir la imagen.

//////////////////////////////////////////////////////////

    if(($ext == 'jpg')||($ext == 'jpeg')||($ext == '')){
        $img= imagecreatefromjpeg("temp/img.".$ext);}
        elseif($ext == 'png'){ $img= imagecreatefrompng("temp/img.".$ext); }
            $dst = ImageCreateTrueColor($anchonew, $altonew);
            imagecopyresampled($dst, $img, 0, 0, 0, 0, $anchonew, $altonew, $ancho, $alto);
        if(($ext == 'jpg')||($ext == 'jpeg')||($ext == '')){
                global $imgname;
                $imgname = "img.jpg";
                imagejpeg($dst,'imagenes/'.$imgname);
              }
        elseif($ext == 'png'){
                  global $imgname;
                  $imgname = "img.".$ext;
                  imagepng($dst,'imagenes/'.$imgname);
    }else{ }

Espero que os sea útil.

No hay comentarios:

Publicar un comentario

Gracias por vuestros aportes.