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:

$id_doc=$_REQUEST['id'];
$qry="Select * from tbl_documentos where id_documento=$id ";
$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
if (mysql_numrows($res)>0) {
$obj=mysql_fetch_object($res);
$im= imagecreatefromstring($obj->contenido);
}else{
$im= imagecreatefromgif("media/images/nophoto.gif");
}
  • 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
header("Content-type: {$obj->tipo}");
$width = imagesx($im);
$height = imagesy($im);
$imgw = 100;
$imgh = $height / $width * $imgw;
$thumb=imagecreatetruecolor($imgw,$imgh);
$back = imagecolorallocate($thumb, 255, 255, 255);
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
ImageCopyResized($thumb,$im,0,0,0,0,$imgw,$imgh,ImageSX($im),ImageSY($im));
$out = ImagejpeG($thumb);
imagedestroy ($im);
imagedestroy ($thumb);
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

//OBTENEMOS EL ID
$id_doc=$_REQUEST['id'];

//CONSTRUIMOS LA CONSULTA PARA OBTENER EL DOCUMENTO
$qry="Select * from tbl_documentos where id_documento=$id ";

//EJECUTAMOS LA CONSULTA
$res=mysql_query($qry) or die(mysql_error()." qry::$qry");

//VERIFICAMOS QUE LA IMAGEN EXISTE
if (mysql_numrows($res)>0) {
$obj=mysql_fetch_object($res);

//CREAMOS UNA IMAGEN CON LA FUNCION DE GD imagecreatefromstring
//YA QUE ESTA PUEDE LEER EL CAMPO BLOB QUE ESTAMOS OBTENIENDO
$im= imagecreatefromstring($obj->contenido);
}else{
//SI NO EXISTE USAMOS ALGUNA OTRA
$im= imagecreatefromgif("media/images/nophoto.gif");
}
//OBTENEMOS EL TIPO MIME DEL ARCHIVO ASI EL NAVEGADOR SABRA DE QUE SE TRATA
header("Content-type: {$obj->tipo}");

//OBTENEMOS LAS MEDIDAS ACTUALES DE LA IMAGEN
$width = imagesx($im);
$height = imagesy($im);

// ESTABLECEMOS EL TAMAÑO DEL THUMBNAIL
$imgw = 100;

//CALCULAMOS EL ALTO DE LA IMAGEN PARA MANTER EL ASPECTO
$imgh = $height / $width * $imgw;

// CREAMOS UNA NUEVA IMAGEN UTILIZANDO LAS NUEVAS MEDIDAS
$thumb=imagecreatetruecolor($imgw,$imgh);

//CREAMOS UN COLOR PARA EL FONDO
//ESTO ES IMPORTANTE PORQUE SI LA IMAGEN CONTIENE FONDO BLANCO
//SOLO OBTENDRIAMOS UNA IMEGEN NEGRA
$back = imagecolorallocate($thumb, 255, 255, 255);
// RELLENAMOS EL LA IMAGEN CON EL COLOR QUE CREAMOS EN EL PASO ANTERIOR
imagefill ( $thumb, 0, 0, $back );

// COPIAMOS LA IMAGEN ORIGINA AL THUMBNAIL
ImageCopyResized($thumb,$im,0,0,0,0,$imgw,$imgh,ImageSX($im),ImageSY($im));

//CREAMOS UNA IMAGEN TIPO JPEG
$out = ImagejpeG($thumb);

// LIMPIAMOS LA MEMORIA
imagedestroy ($im);
imagedestroy ($thumb);
//Y POR ULTIMO SIMPLEMENTE IMPRIMIMOS EL CONTENIDO DEL ARCHIVO
print $out;

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

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

Espero les sea util este articulo,

7 Respuestas para “PHP snippet Como crear thumbnails desde MySQL con PHP”

  1. Dante Robles
    desde Mexico Dijo:

    como siempre muy buen articulo

    Saludos

    Dante

    Responder

  2. Andrés Borbón
    desde Mexico Dijo:

    ¡Caramba! Debo ponerme a estudiar PHP.

    Responder

  3. Ruben Omar
    desde Mexico Dijo:

    Andres: pues solo eta de que pidan su tutorial hacerca de que les gustaria, y me doy el tiempo para hacerlo :D

    Responder

  4. Maucker
    desde Chile Dijo:

    Y como mierda se ejecuta este codigo???

    Responder

  5. Pedro Mendoza
    desde Spain Dijo:

    He probado tu codigo y cuando tiene que utilizar la función imagecreatefromstring da un error, dice que la cadena no tiene un formato JPEG valido, y es un JPG normal y corriente

    Responder

  6. ernesto
    desde Mexico Dijo:

    mando error de sintaxi >0)

    Responder

  7. ernesto
    desde Mexico Dijo:

    manda error de sintaxis > 0 )

    Responder

Responder