Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-09-2008
Avatar de papulo
papulo papulo is offline
Miembro
 
Registrado: ago 2005
Ubicación: Lleida - Cataluña - España -Europa - Planeta tierra - Sistema solar - Via Lactea ...
Posts: 542
Poder: 19
papulo Va por buen camino
Tratamiento de imagen BLOB y redimensionado.

Hola gente,

hoy traigo un nuevo problema, bastante interesante creo yo, relacionado con firebird, imagenes en campos BLOB y el tratarlas antes de mostrarlas.

Básicamente tengo este código que funciona a la perfección:
Código PHP:
<?php 
//imagen.php
/* Mandando las cabeceras de la imagen */ 
//Header("Content-type: image/jpg"); 
 
/* Verificando la existencia de la imagen */ 
$query=("SELECT LAIMAGEN
                FROM PICTURES_JPG
                WHERE p.PICTURE_NAME='M010001'"
); 
 
$connection ibase_pconnect ('1.1.1.1:picturesdb''sysdba''masterkey')or die("Couldn't connect to database!"); 
 
$sql $query//Insertamos la consulta que queremos realizar 
 
$consulta ibase_query($connection$sql); 
$data ibase_fetch_object ($consulta);

ibase_blob_echo($data->PICTURE);
Que funciona chachi de la muerte.

La cuestión es la siguiente, estoy haciendo una API que permite cargar esas imágenes remotamente, pero "pesan" un poco y me gustaría poder rebajarles el tamaño, amén de redimensionarlas de forma proporcional, antes de enviarlas al navegador.

¿El problema?

Básicamente es que no tengo ni idea de como abordar el tema, las imágenes con los campos BLOB de Firebird no acaban de ser una combinación cómoda.

¿Como abordo los distintos problemas?

Espero no estar preguntando algo trivial.

¡Saludos a todos!
__________________
"El aprendizaje potencia la intuición"
Yo mismo, en un momento de inspiración. v2.0
Responder Con Cita
  #2  
Antiguo 12-09-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Yo comenzaría explorando las posibilidades de la biblioteca GD para PHP. De la lista (enorme) de funciones, parecen aplicar éstas:

La primera te serviría para crear un objeto GD a artir del campo BLOB. Supongo que para ello te servirán ibase_blob_open e ibase_blob_get

La segunda la usaría para crear la vista en miniatura, que es la que mandarías al navegador.

Buscando en el manual, puede verse en uno de los comentarios un ejemplo con MySQL.

// Saludos
Responder Con Cita
  #3  
Antiguo 13-09-2008
Avatar de papulo
papulo papulo is offline
Miembro
 
Registrado: ago 2005
Ubicación: Lleida - Cataluña - España -Europa - Planeta tierra - Sistema solar - Via Lactea ...
Posts: 542
Poder: 19
papulo Va por buen camino
Gracias por la información, en cuanto tenga algo montado y funcionando, lo copiaré aquí para que si alguien mas tiene dudas sepa donde está la solución.

Saludos.
__________________
"El aprendizaje potencia la intuición"
Yo mismo, en un momento de inspiración. v2.0
Responder Con Cita
  #4  
Antiguo 18-09-2008
Avatar de papulo
papulo papulo is offline
Miembro
 
Registrado: ago 2005
Ubicación: Lleida - Cataluña - España -Europa - Planeta tierra - Sistema solar - Via Lactea ...
Posts: 542
Poder: 19
papulo Va por buen camino
Lo prometido es deuda, aquí va la solución:
Código PHP:
//Habremos hecho la query para capturar el blob antes.
$consulta ibase_query($connection$sql); 
$data ibase_fetch_object ($consulta);
$blob_data ibase_blob_info($data->PICTURE);
$blob_hndl ibase_blob_open($data->PICTURE);
$blob_imagen ibase_blob_get($blob_hndl$blob_data[0]); 

$size 150;  // Tamaño de la mayor propocion de la nueva imagen
$imagen imagecreatefromstring($blob_imagen);

$ancho_original imagesx($imagen);
$alto_original imagesy($imagen);

if(
$ancho_original>$alto_original){
    
$new_w $size;
    
$new_h abs($alto_original*$size/$ancho_original);
}else{
    
$new_h $size;
    
$new_w abs($ancho_original*$size/$alto_original);
    }

$miniatura imagecreatetruecolor($new_w,$new_h);

imagecopyresized($miniatura,$imagen,0,0,0,0,$new_w,$new_h,$ancho_original,$alto_original);
imagejpeg($miniatura); 
Y por supuesto, 100000 gracias a Roman, de veras.

Saludos y espero que ayude a mas gente.
__________________
"El aprendizaje potencia la intuición"
Yo mismo, en un momento de inspiración. v2.0
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Mostra Blob como imagen MaMu Conexión con bases de datos 8 31-05-2007 21:36:57
Cargar imagen BLOB usando BDE leodenis784 Gráficos 3 12-09-2006 10:31:07
Tratamiento de los campos BLOB de ORACLE javito Oracle 1 06-09-2004 20:27:32
Redimensionado de pantallas Novás Varios 2 29-10-2003 15:49:33
Funcion Udf que devuelva un blob (imagen) Emiro Firebird e Interbase 2 04-08-2003 15:59:40


La franja horaria es GMT +2. Ahora son las 04:25:13.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi