Hacia mucho que no hacia un tuto, asi que voy a acerlo usando gd.
Vamos a crear thumbnails, ¿qué son? Son imagenes más pequeñas que las originales (o parte de ellas), que tiene diversos usos.
Primero haremos las imagenes, pero mas pequeñas.
<?php
if(!$_GET['imagen'] or !file_exists($_GET['imagen']) { die('error'); } // si no hay imagen o no existe damos error
list($ancho, $alto, $tipo) = getimagesize($_GET['imagen']); // listamos el ancho, alto y el tipo de imagen a partir de getimagesize
switch(image_type_to_extension($tipo)) { // image_type_to_extension convierte el tipo de imagen a su extension, no se si abra un tuto de switch en el foro
case '.png': // si es png
$img = imagecreatefrompng($_GET['imagen']) or die('error creando imagen'); // creamos la imagen png
break;
case '.jpeg':
$img = imagecreatefromjpeg($_GET['imagen']) or die('error creando imagen'); // = k antes
break;
case '.gif':
$img = imagecreatefromgif($_GET['imagen']) or die('error creando imagen'); // = k antes
break;
default:
die('La imagen debe ser png, gif o jpg'); // si no es ninguno de esos 3 tipos, mostramos error
break;
}
$ancho2 = 100; // ancho del thumbnail
$alto2 = 100; // alto del thubnail
$thumb = imagecreatetruecolor($ancho2, $alto2); // creamos la imagen del thumbnail, con el ancho y alto k keramos
imagecopyresampled($thumb, $img, 0, 0, 0, 0, $ancho2, $alto2, $ancho, $alto); // copiamos la imagen, los parametros de esta funcion son la imagen de destino, la original, las coordenadas x e y donde se pegara la imagen, las coordenadas x e y donde se empezara a cortar de la imagen original, y los anchos y altos de la nueva imagen y la orginal, respectivamente
header('Content-type: '.image_type_to_mime_type($tipo)); // creamos un header para indicar el tipo de contenido, con image_type_to_mime_type obtenes el MIME (image/png , por ejemplo)
imagepng($thumb); mostramos el thumbnail, x ejemplo en png
imagedestroy($img);
imagedestroy($thumb);
// liberamos memoria borrando las imagenes
?>
Guardamos el archivo como, por ejemplo, thumb.php y para acceder usamos thumb.php?imagen=imagengrande.png
Ahora aremos otro tipo de thumbnail, x asi decirlo, esta vez el thumbnail sera una parte al azar de la imagen original.
<?php
if(!$_GET['imagen'] or !file_exists($_GET['imagen']) { die('error'); }
list($ancho, $alto, $tipo) = getimagesize($_GET['imagen']);
switch(image_type_to_extension($tipo)) {
case '.png': // si es png
$img = imagecreatefrompng($_GET['imagen']) or die('error creando imagen');
break;
case '.jpeg':
$img = imagecreatefromjpeg($_GET['imagen']) or die('error creando imagen');
break;
case '.gif':
$img = imagecreatefromgif($_GET['imagen']) or die('error creando imagen');
break;
default:
die('La imagen debe ser png, gif o jpg');
break;
}
$ancho2 = 100;
$alto2 = 100;
// hasta aki igual que antes
$x = mt_rand(0, (imagesx($img)-$ancho2)); // obtenemos una posicion x al azar donde empezara la parte, imagesx devuelve los x de la iamgen y le kitamos el ancho del thumbnail para no salirnos
$y = mt_rand(0, (imagesy($img)-$alto2)); // igual pero con y y height
$thumb = imagecreatetruecolor($ancho2, $alto2); // creamos el thumb
imagecopyresampled($thumb, $img, 0, 0, $x, $y, $ancho2, $alto2, $ancho2, $alto2); // los mismos parametros, las coordenadas x e y de destino son las mismas, pero en la imagen original empezaremos a partir del $x y $y que hemos obtenido antes, el ancho y alto del destino son los mismo que el thumbnail, al igual que de la imagen original, para obtener las dimensiones del thumbnail
header('Content-type: '.image_type_to_mime_type($tipo));
imagepng($thumb);
imagedestroy($img);
imagedestroy($thumb);
// hacemos lo mismo que antes
?>
Se llama exactamente igual.
Espero que os haya gustado, salu2.