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