PHP snippet Como crear thumbnails desde MySQL con PHP

20.02.2008
758 views

Bueno creo que ya estubo bien de tantos articulos sobre psp y otras cosas y es tiempo de volver a lo mio, los tutoriales con mas codigo que palabras, aunque de repente pondre uno que ptro post de posicionamiento :P,

Requisitos:

  • Tener instalado PHP y MySQL.
  • Conocimientos basicos de PHP y MySQL.
  • GD instalado y funcionando.
  • 1.- Analicemos el problema tomando como base el articulo Manejo de archivos con PHP y MySQL en el cual explico como guardar archivos en MySQL, asi que tomaremos la tabla de ese ejemplo.

    Bueno ya fue mucha platica mejor vemos el codigo por partes, al final lo pondre todo junto:

    PHP:
    1. $id_doc=$_REQUEST['id'];
    2. $qry="Select * from tbl_documentos where id_documento=$id ";
    3. $res=mysql_query($qry) or die(mysql_error()." qry::$qry");

  • 1.- OBTENEMOS EL ID
  • 2.- CONSTRUIMOS LA CONSULTA PARA OBTENER EL DOCUMENTO
  • 3.- EJECUTAMOS LA CONSULTA
PHP:
  1. if (mysql_numrows($res)>0) {
  2. $obj=mysql_fetch_object($res);
  3. $im= imagecreatefromstring($obj->contenido);
  4. }else{
  5. $im= imagecreatefromgif("media/images/nophoto.gif");
  6. }

  • 1.- VERIFICAMOS QUE LA IMAGEN EXISTE
  • 3.- CREAMOS UNA IMAGEN CON LA FUNCION DE GD imagecreatefromstring YA QUE ESTA PUEDE LEER EL CAMPO BLOB QUE ESTAMOS OBTENIENDO
  • 5.- SI NO EXISTE USAMOS ALGUNA OTRA
PHP:
  1. header("Content-type: {$obj->tipo}");
  2. $width = imagesx($im);
  3. $height = imagesy($im);
  4. $imgw = 100;
  5. $imgh = $height / $width * $imgw;
  6. $thumb=imagecreatetruecolor($imgw,$imgh);
  7. $back = imagecolorallocate($thumb, 255, 255, 255);
  8. imagefill ( $thumb, 0, 0, $back );

  • 1.- OBTENEMOS EL TIPO MIME DEL ARCHIVO ASI EL NAVEGADOR SABRA DE QUE SE TRATA
  • 2.- OBTENEMOS LAS MEDIDAS ACTUALES DE LA IMAGEN
  • 4.- ESTABLECEMOS EL TAMAÑO DEL THUMBNAIL
  • 5.- CALCULAMOS EL ALTO DE LA IMAGEN PARA MANTER EL ASPECTO
  • 6.- CREAMOS UNA NUEVA IMAGEN UTILIZANDO LAS NUEVAS MEDIDAS
  • 7.- CREAMOS UN COLOR PARA EL FONDO ESTO ES IMPORTANTE PORQUE SI LA IMAGEN CONTIENE FONDO BLANCO SOLO OBTENDRIAMOS UNA IMEGEN NEGRA
  • 8.- RELLENAMOS EL LA IMAGEN CON EL COLOR QUE CREAMOS EN EL PASO ANTERIOR
PHP:
  1. ImageCopyResized($thumb,$im,0,0,0,0,$imgw,$imgh,ImageSX($im),ImageSY($im));
  2. $out = ImagejpeG($thumb);
  3. imagedestroy ($im);
  4. imagedestroy ($thumb);
  5. print $out;

  • 1.- COPIAMOS LA IMAGEN ORIGINAL AL THUMBNAIL
  • 2.- CREAMOS UNA IMAGEN TIPO JPEG
  • 3.- LIMPIAMOS LA MEMORIA
  • 4.- Y POR ULTIMO SIMPLEMENTE IMPRIMIMOS EL CONTENIDO DEL ARCHIVO

Aquie esta el codigo completo

PHP:
  1. //OBTENEMOS EL ID
  2. $id_doc=$_REQUEST['id'];
  3.  
  4. //CONSTRUIMOS LA CONSULTA PARA OBTENER EL DOCUMENTO
  5. $qry="Select * from tbl_documentos where id_documento=$id ";
  6.  
  7. //EJECUTAMOS LA CONSULTA
  8. $res=mysql_query($qry) or die(mysql_error()." qry::$qry");
  9.  
  10. //VERIFICAMOS QUE LA IMAGEN EXISTE
  11. if (mysql_numrows($res)>0) {
  12. $obj=mysql_fetch_object($res);
  13.  
  14. //CREAMOS UNA IMAGEN CON LA FUNCION DE GD imagecreatefromstring
  15. //YA QUE ESTA PUEDE LEER EL CAMPO BLOB QUE ESTAMOS OBTENIENDO
  16. $im= imagecreatefromstring($obj->contenido);
  17. }else{
  18. //SI NO EXISTE USAMOS ALGUNA OTRA
  19. $im= imagecreatefromgif("media/images/nophoto.gif");
  20. }
  21. //OBTENEMOS EL TIPO MIME DEL ARCHIVO ASI EL NAVEGADOR SABRA DE QUE SE TRATA
  22. header("Content-type: {$obj->tipo}");
  23.  
  24. //OBTENEMOS LAS MEDIDAS ACTUALES DE LA IMAGEN
  25. $width = imagesx($im);
  26. $height = imagesy($im);
  27.  
  28. // ESTABLECEMOS EL TAMAÑO DEL THUMBNAIL
  29. $imgw = 100;
  30.  
  31. //CALCULAMOS EL ALTO DE LA IMAGEN PARA MANTER EL ASPECTO
  32. $imgh = $height / $width * $imgw;
  33.  
  34. // CREAMOS UNA NUEVA IMAGEN UTILIZANDO LAS NUEVAS MEDIDAS
  35. $thumb=imagecreatetruecolor($imgw,$imgh);
  36.  
  37. //CREAMOS UN COLOR PARA EL FONDO
  38. //ESTO ES IMPORTANTE PORQUE SI LA IMAGEN CONTIENE FONDO BLANCO
  39. //SOLO OBTENDRIAMOS UNA IMEGEN NEGRA
  40. $back = imagecolorallocate($thumb, 255, 255, 255);
  41. // RELLENAMOS EL LA IMAGEN CON EL COLOR QUE CREAMOS EN EL PASO ANTERIOR
  42. imagefill ( $thumb, 0, 0, $back );
  43.  
  44. // COPIAMOS LA IMAGEN ORIGINA AL THUMBNAIL
  45. ImageCopyResized($thumb,$im,0,0,0,0,$imgw,$imgh,ImageSX($im),ImageSY($im));
  46.  
  47. //CREAMOS UNA IMAGEN TIPO JPEG
  48. $out = ImagejpeG($thumb);
  49.  
  50. // LIMPIAMOS LA MEMORIA
  51. imagedestroy ($im);
  52. imagedestroy ($thumb);
  53. //Y POR ULTIMO SIMPLEMENTE IMPRIMIMOS EL CONTENIDO DEL ARCHIVO
  54. print $out;

Guardamos el codigo con el nombre que queramos yo por ejemplo thumbnail.php y lo usamos de la siguiente manera

HTML:
  1. <img src="http://blog.deliriumlabs.net/wp-admin/thumbnail.php?id_documento=1" />

Espero les sea util este articulo,

Blogalaxia tags:
Blogalaxia
php
mysql
linux
thumbnails
miniaturas
internet
informatica
manuales
tutoriales
blog
blogs

Tambien te puede interesar:

Links Relacionados

23.01.2008
257 views
Sin Comentarios

PHP Snippet Convertir fechas entre MySQL y castellano

23.01.2008
257 views

Normalmente recibimos las fechas que vamos a guardar en formato dd/mm/yyyy pero en mysql las guardamos en formato yyyy/mm/dd
asi que sin mas aqui les dejo la manera practica que el jegs encontro para hacer la conversion
PLAIN TEXT
PHP:

function parse_date($fecha){

    list($dia,$mes,$anio)=explode("/",$fecha);

    $fecha="$anio-$mes-$dia";

    return $fecha

}

Y asi de facil podemos convertir las fechas que recibimos [...]