PDA

Ver la Versión Completa : ¿Que tipo de imágenes soporta firebird?


Delphius
09-10-2006, 16:30:43
Buenas foristas:

Como lo dice el título... que tipo de imágnes se pueden almacenar en firebird.... jpeg? bmp?....

Entre los documentos que tengo sobre firebird no he encontrado referencia al respecto....Si alguno de ustedes tiene un poco de material, como de los tipos para tontos, sobre firebird e imágenes le agradecería que me diera un enlace o una idea básica...

Gracias,

JXJ
09-10-2006, 18:04:43
yo creo que todas, si se convierten a formato bin o en formato de texto.
no estoy seguro, que apenas voy a empezar a meter imagenes en mysql
y ya despues probare Firebird.

Casimiro Notevi
09-10-2006, 21:22:08
Puedes almacenar TODOS los formatos, CUALQUIER tipo, no sólamente imágenes, sino cualquier tipo de archivo.
Para eso están los campos del tipo blob

Delphius
10-10-2006, 13:27:55
Gracias por responder tan pronto!

Estoy más tranquilo al saber que Firebird cuenta on el tipo BLOB. Me surge una duda... ¿como haría para que se almacene la imagen? tendría que hacer algo como:

insert ..... values(DirecionDelArchivoImagen)


Estoy apreniendo esto de Firebird.... mucho no lo he toqueteado.
Ahora me urge aprendenderlo, tengo una tesis que hacer sobre sistemas de reconocimiento de caras en imagenes....

Nuevamente gracias.

Delphius
13-10-2006, 01:34:07
Hola foristas,

Disculpen la insistencia....pero ahora...me podrían indicar de como se procedería a almacenar una imagen en un campo BLOB?... la verdad es que estoy muy verde.... si tienen algún documento y/o refencia sobre imagenes y firebird... les agradecería...

Saludos,

fly
13-10-2006, 02:00:16
Lo mejor que puedes hacer es guardar en la DB la ruta a la imagen y no guardar directamente la imagen; si la tesis no trata sobre el almacenamiento de datos sino sobre el reconocimiento de imágenes, no deberias liarte con temas que no dominas y centrarte en el resto.

Si aún así quieres, o necesitas, que las imágenes se guarden junto a los datos, creo que se debería hacer igual que con cualquier otro BLOB, yo lo que uso son parámetros.


var parametro : TParam;
.......

parametro:=dmq1.edit_q.Params.CreateParam(ftBlob,'nota_b',ptInput);
// ^-----creeamos el parámetro de tipo Blob y como un valor de entrada

dmq1.edit_q.parambyname('nota_b').AsBlob:=Memo_notas.Text;
// ^----- pasamos el valor de componente al parámetro (EN TU CASO SERIA UN COMPNENTE TIPO imagen_jpg)

Dmq1.Edit_Q.SQL.Text:=
'UPDATE Clientes SET '+
' notas= :nota_b, '+ // la inserción mediante parámetro se realiza siempre así, poniendo dos puntos ( : ) precediendo al parámetro
' WHERE cod_cli='
.....


El ejemplo lo pille de un trozo de código que uso para insertar campos MEMO, pero debería ser igual para campos tipo IMAGEN

Saludos.

Delphius
13-10-2006, 02:10:27
Y si... las imagenes las debo almacenar en la base de datos...

Entiendo un poco a medias tu código.... que es el ¿dmq1? el ¿Edit_q es un querry?

Saludos, y gracias por ayudar...

fly
13-10-2006, 04:31:34
Si no queda más remedio que incluir las imagenes en la DB vamos a ver si lo conseguimos ;).

Ya te digo que nunca lo he hecho, pero debería ser igual que cualquier otro dato.
Respecto al código acertaste, a ver si me explico mejor ahora:

DMQ1 es un Data Module (es igual que cualquier UNIT pero algo más específica) donde yo guardo todos mis compoentes relacionados con la DB (transacciones, querys, datasources... ) para tenerlas todas localizables y de facil acceso desde los diferentes Forms (aunque tambien tengo a veces componentes locales que solo uso en un form).

EDIT_Q es un componente TIBQuery (es el que uso por dejecto para cualquier sentencia SQL que no sea un SELECT)

No uso componentes DBE, FBIPlus ni similares, tan sólo los componetes básicos de Interbase, por lo tanto el código es algo como esto:

............... editado ...........
Al final mientras posteaba decidí cambiarlo, usando una imagen en vez de un MEMO como en el ejemplo anterior.


Procedure TMiform.GuardarDato;
var parametro : TParam; // TParam se encuentra en DB.pas
begin

// primero creamos el prarámeto
parametro:=MiIBQuery.Params.CreateParam(ftBlob,'_parametro_blob',ptInput);

// ftBlob -> indico que queremos crear un parametro tipo Blob, existe un ftGraphic pero me da error al ejecutar la query :!
// ptInput -> indico que va a ser un parametro de entrada de datos
// '_parametro_blob' --> el nombre del parametro que vamos a crear (usa el que tu quieras)

// Cargamos los datos en el parámeto recien creado
MiIBQuery.parambyname('_parametro_blob').LoadFromFile('c:\pru.bmp',ftBlob);

// Ponemos la sentencia SQL en la Query
MiIBQuery.SQL.TEXT:=
'UPDATE configuracion SET'+
' logo_empresa= :_parametro_blob '+ // la inserción mediante parámetro se realiza siempre así, poniendo dos puntos ( : ) precediendo al parámetro
' WHERE codigo=1';

// ahora ejecutamos el SQL
MiIBQuery.close;
MiIBQuery.prepare;
MiIBQuery.execSQL;

// borramos el parámetro creado
MiTIBQuery.Params.Clear;

end;

He usado una imagen BMP porque no uso componentes para ver JPG, hice las pruebas con un DBImage para ver el resultado del campo blob.

Este código lo he probado y funciona, a ver si te sirve.

Saludos.

Delphius
13-10-2006, 13:10:09
Gracias Fly!... tu explicación y tu segundo código lo entendí....

Ahorita estoy en el trabajo, pero ni bien llegue a casa lo pruebo. Muchísimas gracias por ofrecer tu ayuda.

En cuanto salía para mi trabajo... me pensé si el dm1 era un DataModule....
Si necesito alguna manito estaré posteando.

RONPABLO
13-10-2006, 16:42:53
Hola cordial saludo, como tal he buscado (sin exito) si existe la posibilidad de usar firebird como un canal para enviar archivos desde el servidor a otros equipos.... en si lo que quiero es guardar la ruta de un archivo (audio, imagen, video, ejecutable, etc), y desde el mismo firebird cargar ese archivo que esta en disco duro (no lo quiero almacenado como un campo blob) y lo pueda manejar como otro dato de una consulta y que llegue a los demas clientes por medio de un DataSet y no como un archivo compartido en la red???

RONPABLO
13-10-2006, 16:44:55
:o Huy se me chispoteo!!... algun moderador puede borrar este post que lo queira poner en un hilo independiente??

JXJ
13-10-2006, 18:14:30
hacer eso RONPABLO, suena interesante

RONPABLO
13-10-2006, 19:33:58
Si muy interesante, y que me quitaria uno que otro dolor de cabeza!
Pero no deberiamos hablar de eso en este hilo ya que lo puse por error (crei que le di nuevo Hilo y puse responder Hilo)... en si la pregunta y las respuestas a este tema que necesito deberian ir por aquí (http://www.clubdelphi.com/foros/showthread.php?t=36485) y esperar que un moderador me haga el favor de quitar el post de este hilo para que no redunde la información... nuevamente pido disculpas! :o