Autor Tema: [GD] Creando thumbnails  (Leído 897 veces)

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
[GD] Creando thumbnails
« en: 14 de Julio de 2009, 19:07:39 pm »
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[&#39;imagen&#39;] or !file_exists($_GET[&#39;imagen&#39;]) { die(&#39;error&#39;); } // si no hay imagen o no existe damos error

list($ancho$alto$tipo) = getimagesize($_GET[&#39;imagen&#39;]); // 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 &
#39;.png&#39;: // si es png
	
$img imagecreatefrompng($_GET[&#39;imagen&#39;]) or die(&#39;error creando imagen&#39;); // creamos la imagen png
	
break;
	
case &
#39;.jpeg&#39;:
	
$img imagecreatefromjpeg($_GET[&#39;imagen&#39;]) or die(&#39;error creando imagen&#39;); // = k antes
	
break;
	
case &
#39;.gif&#39;:
	
$img imagecreatefromgif($_GET[&#39;imagen&#39;]) or die(&#39;error creando imagen&#39;); // = k antes
	
break;
	
default:
	
die(&
#39;La imagen debe ser png, gif o jpg&#39;); // 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$img0000$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(&#39;Content-type: &#39;.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 thumbnailx 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[&#39;imagen&#39;] or !file_exists($_GET[&#39;imagen&#39;]) { die(&#39;error&#39;); }

list($ancho$alto$tipo) = getimagesize($_GET[&#39;imagen&#39;]);

switch(image_type_to_extension($tipo)) {
	
case &
#39;.png&#39;: // si es png
	
$img imagecreatefrompng($_GET[&#39;imagen&#39;]) or die(&#39;error creando imagen&#39;);
	
break;
	
case &
#39;.jpeg&#39;:
	
$img imagecreatefromjpeg($_GET[&#39;imagen&#39;]) or die(&#39;error creando imagen&#39;);
	
break;
	
case &
#39;.gif&#39;:
	
$img imagecreatefromgif($_GET[&#39;imagen&#39;]) or die(&#39;error creando imagen&#39;);
	
break;
	
default:
	
die(&
#39;La imagen debe ser png, gif o jpg&#39;); 
	
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$img00$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(&#39;Content-type: &#39;.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.
« Última modificación: 05 de Junio de 2010, 19:51:46 pm por westwest »

Comunidad PHPeros

[GD] Creando thumbnails
« en: 14 de Julio de 2009, 19:07:39 pm »

Desconectado Masato

  • PHPero Avanzado
  • ****
  • Mensajes: 480
  • Karma: 12
  • Sexo: Masculino
  • <?php echo "Solo quiero aprender php"; ?>
    • Ver Perfil
    • Masato Design!
Re: [GD] Creando thumbnails
« Respuesta #1 en: 15 de Julio de 2009, 18:21:25 pm »
Lo mismo en PF, muy buen tuto west, espero que los sigas asiendo todos así ^^

hay te va un +1 :D

Desconectado Marcelox

  • PHPerit@
  • *
  • Mensajes: 29
  • Karma: 0
    • Ver Perfil
Re: [GD] Creando thumbnails
« Respuesta #2 en: 26 de Julio de 2009, 06:02:46 am »
Muy buen tutorial me gusto arto  :)