ok,
Me he estado documentando y veo una serie de funciones para crear thumbails de las imagenes.
Lo he probado y funciona correctamente, la pregunta es:
Al crear la copia de la misma imagen pero mas reducida, pierde menos resolucion que si le cambiara el tamaño en el html no? A simple vista he probado y parece que se ve peor esta si cambio el tamaño en el html que si hago la copia...
dejo el codigo por si le interesan:
Código PHP:
function abrir_Imagen($imagen) {
if (@$info_imagen = getimagesize($imagen)) {
switch ($info_imagen['mime']) {
case "image/jpeg":
if (!@$imagen_fuente = imagecreatefromjpeg($imagen)) {
return 0;
}
break;
case "image/gif":
if (!@$imagen_fuente = imagecreatefromgif($imagen)) {
return 0;
}
break;
case "image/png":
if (!@$imagen_fuente = imagecreatefrompng($imagen)) {
return 0;
}
break;
}
} else {
return 0;
}
return $imagen_fuente;
}
function crear_Thumbnail($imagen, $ancho_max = 200, $alto_max = 200, $calidad = 80, $destino = "", $marca = "", $posicion_marca = 0, $margen = 4) {
if ($destino == "") {
header('Content-type: image/jpeg');
}
// OBTENGO LOS DATOS ORIGINALES DE LA IMAGEN Y CHEQUEO QUE SEA UNA IMAGEN VALIDA
if (@$datos_img = getimagesize($imagen)) {
$ancho = $datos_img[0];
$alto = $datos_img[1];
$ancho_orig = $ancho;
$alto_orig = $alto;
// CALCULO ANCHO Y ALTO PROPORCIONALES
if ($ancho > $ancho_max) {
$proporcion = round(($ancho_max * 100) / $ancho);
$ancho = $ancho_max;
$alto = round(($alto * $proporcion) / 100);
}
if ($alto > $alto_max) {
$proporcion = round(($alto_max * 100) / $alto);
$alto = $alto_max;
$ancho = round(($ancho * $proporcion) / 100);
}
// CREO LA NUEVA IMAGEN
$imagen_nueva = imagecreatetruecolor($ancho, $alto);
// ABRO LA IMAGEN FUENTE
if (!$imagen_fuente = abrir_Imagen($imagen)) {
return 0;
exit;
}
// COPIO LA IMAGEN FUENTE EN LA NUEVA
imagecopyresampled($imagen_nueva, $imagen_fuente, 0, 0, 0, 0, $ancho, $alto, $ancho_orig, $alto_orig);
// CHEQUEO SI HAY QUE AGREGAR UNA MARCA
if (($marca != "") && ($imagen_marca = abrir_Imagen($marca))) {
list($ancho_marca, $alto_marca) = getimagesize($marca);
$pos_x = $margen;
$pos_y = $margen;
switch ($posicion_marca) {
case 1:
$pos_x = ($ancho - $ancho_marca) - $margen;
break;
case 2:
$pos_y = ($alto - $alto_marca) - $margen;
break;
case 3:
$pos_x = ($ancho - $ancho_marca) - $margen;
$pos_y = ($alto - $alto_marca) - $margen;
break;
}
imagecopy($imagen_nueva, $imagen_marca, $pos_x, $pos_y, 0, 0, $ancho_marca, $alto_marca);
}
imagejpeg($imagen_nueva, $destino, $calidad);
return 1;
} else {
// HA OCURRIDO UN ERROR AL OBTENER LOS DATOS DE LA IMAGEN.
// PUEDE SER QUE EL ARCHIVO NO EXISTA, O QUE NO SEA UNA
// IMAGEN VALIDA.
return 0;
}
}
crear_Thumbnail("zapato.jpg", 100, 100, 80, "zap_1.jpg");
Lo dicho, lo puedo hacer así? es que asi evitaria muchos procesos como:
Crear lotes/acciones en photoshop
Subir dos imagenes por modelos...
Pero bueno si es la única manera,....
Un saludo, y gracias por vuestra respuesta.