código

Redimensionar imagenes con imagescale en php

Vamos a redimensionar una imagen con distintos tamaños respetando las proporciones de la imagen original.

La función recibe la ubicación y el ancho que llevará nuestra nueva imagen, pero puede mejorarse obteniendo como base el ancho de la imagen original y reducirla en un porcentaje.

<?php

function redimensionar_jpeg($type,$img_original, $img_alt = 150){
	if(file_exists($img_original)) { // crear imagen desde original
		$type=strtolower($type);
		switch($type){
           case 'jpeg':    $img = ImageCreateFromJPEG($img_original); break;
           case 'jpg':        $img = ImageCreateFromJPEG($img_original); break;
           case 'png':        $img = ImageCreateFromPNG($img_original); breaK;
           case 'gif':        $img = ImageCreateFromGIF($img_original); breaK;
           case 'wbmp':    $img = ImageCreateFromWBMP($img_original); break;
        }
      }else{
        $img = ImageCreateFromJPEG($defecto);
      }

      if(!empty($img)) {
      //solamente proporcionamos el alto de la imagen
        return imagescale( $img, $img_alt ); 
      }
    }
// preparamos una marca de agua
  $estampa = redimensionar_jpeg('jpg','imagenes/marca.jpg',150);
//preparamos la foto principal
  $im = imagecreatefrompng('imagenes/foto.png');    
  // Establecer los márgenes para la estampa y obtener el alto/ancho de la imagen de la estampa
  $margen_dcho = 140;
  $margen_inf = 560;
  $sx = imagesx($estampa);
  $sy = imagesy($estampa);

imagecopy($im, $estampa, imagesx($im) - $sx - $margen_dcho, imagesy($im) - $sy - $margen_inf, 0, 0, imagesx($estampa), imagesy($estampa));

header("Content-type: image/png");
imagepng($im);
imagedestroy($im);
  
?>

Para este ejemplo utilizamos imagescale, es bastante sencillo para darnos cuenta de lo fácil que es redimensionar una imagen. Pero podemos agregar transparencias, textos, etc, etc.

imagescale(
    resource $image,
    int $new_width,
    int $new_height = -1,
    int $mode = IMG_BILINEAR_FIXED
): resource