Image rezise avanzado
<?php
//la imagen y sus datos
$ruta_imagen = $_REQUEST['src'];
@$ancho_deseado = $_REQUEST['ancho'];
@$alto_deseado = $_REQUEST['alto'];
//Tamaño original
$info_fuente = getimagesize($ruta_imagen);
$ancho_original = $info_fuente[0];
$alto_original = $info_fuente[1];
//el tipo de mime
$tipo_mime = $info_fuente['mime'];
//=== si no se pone el alto ====//
if (!isset($_REQUEST['alto']) && isset($_REQUEST['ancho'])) {
//si no pone alto
$alto_deseado = ($ancho_deseado * $alto_original) / $ancho_original;
} else {
//si pone alto se fuerza
@$alto_deseado = $_REQUEST['alto'];
}
//==== si no se pone el ancho ==//
if (!isset($_REQUEST['ancho']) && isset($_REQUEST['alto'])) {
//si no pone ancho
$ancho_deseado = ($alto_deseado * $ancho_original) / $alto_original;
} else {
//si pone ancho se fuerza
@$ancho_deseado = $_REQUEST['ancho'];
}
//===== poner la imagen tal cual =====//
if (!isset($_REQUEST['ancho']) && !isset($_REQUEST['alto'])) {
$ancho_deseado = $ancho_original;
$alto_deseado = $alto_original;
}
$recurso_copia = imagecreatetruecolor($ancho_deseado, $alto_deseado);
//segun el tipo creo
if ($tipo_mime == 'image/png') { //para png
//poner fondo transparente
$recurso_fuente = imagecreatefrompng($ruta_imagen);
imagealphablending($recurso_copia, false);
imagesavealpha($recurso_copia, true);
$transparent = imagecolorallocatealpha($recurso_copia, 255, 255, 255, 127);
imagefilledrectangle($recurso_copia, 0, 0, $ancho_deseado, $alto_deseado, $transparent);
//crear la imagen
imagecopyresampled($recurso_copia, $recurso_fuente, 0, 0, 0, 0, $ancho_deseado, $alto_deseado, $info_fuente[0], $info_fuente[1]);
} elseif ($tipo_mime == 'image/jpeg') { //para jpeg
$recurso_fuente = imagecreatefromjpeg($ruta_imagen);
imagecopyresampled($recurso_copia, $recurso_fuente, 0, 0, 0, 0, $ancho_deseado, $alto_deseado, $info_fuente[0], $info_fuente[1]);
} elseif ($tipo_mime == 'image/gif') { //para gif
//poner fondo transparente
$recurso_fuente = imagecreatefromgif($ruta_imagen);
imagealphablending($recurso_copia, false);
imagesavealpha($recurso_copia, true);
$transparent = imagecolorallocatealpha($recurso_copia, 255, 255, 255, 127);
imagefilledrectangle($recurso_copia, 0, 0, $ancho_deseado, $alto_deseado, $transparent);
//crear la imagen
imagecopyresampled($recurso_copia, $recurso_fuente, 0, 0, 0, 0, $ancho_deseado, $alto_deseado, $info_fuente[0], $info_fuente[1]);
}
//crear todito
@header('Content-type: ' . $tipo_mime);
imagepng($recurso_copia);
imagedestroy($recurso_copia);
imagedestroy($recurso_fuente);
?>