FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
¿Qué tipo de imagen es?
Tengo una aplicación en BCB 6 con una base de datos en Firebird y en una de las tablas hay guardadas imágenes en un campo BLOB. A la hora de leer esa tabla y mostrar el contenido, ya sea en el formulario o en un impreso, ¿cómo puedo saber que tipo de imagen estoy leyendo? Porque dependiendo de si es un BMP o un JPG el tratamiento es diferente.
A ver: Si la imagen original es un JPG con este código Código:
Imagen->Picture->Assign(Query->FieldByName("Imagen")); Última edición por Angel.Matilla fecha: 21-07-2017 a las 19:38:22. |
#2
|
||||
|
||||
Hola.
Si vas a almacenar distintos tipos de imágenes en tu tabla, lo mas simple es agregar un campo (SMALLINT por ej.) que indique de que tipo de imágen se trata, revisa este hilo. Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#3
|
||||
|
||||
Podrias leer las cabeceras y detectar el tipo de imagen. En este blog esta explicado e implementado: https://delphihaven.wordpress.com/20...aphic-formats/
|
#4
|
||||
|
||||
Gracias por vuestras respuestas. Me han dado la solución en otro foro.
Código:
//Añadir cabeceras: #include <memory> #include <jpeg.hpp> std::auto_ptr<TMemoryStream> stream(new TMemoryStream); TBlobField* blob = static_cast<TBlobField*>(Query->FieldByName("Imagen")); blob->SaveToStream(stream.get()); stream->Position = 0; DWORD* tipo = static_cast<DWORD*>(stream->Memory); if (tipo && *tipo == 0xE0FFD8FF) { std::auto_ptr<TJPEGImage> jpeg(new TJPEGImage); jpeg->LoadFromStream(stream.get()); Imagen->Picture->Assign(jpeg.get()); } else Imagen->Picture->Assign(blob); |
#5
|
||||
|
||||
Hola.
Si, pero vale aclarar que ese código sólo funciona para los tipos BMP y JPG, no funcionará si desearas usar imágenes de tipo PNG, ICO, GIF, etc. Para que soporte sólo esos dos tipos de imágen también se podría escribir así: Código PHP:
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 24-07-2017 a las 20:04:38. |
#6
|
||||
|
||||
Cita:
Código PHP:
|
#7
|
||||
|
||||
Hola _Leo.
Si, en Builder C++ 6 funciona sin problemas. Una prueba sobre una tabla con imágenes JPG y BMP mezcladas: Código PHP:
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 24-07-2017 a las 22:26:28. |
#8
|
||||
|
||||
¿Estás seguro de que los campos blob contienen realmente un archivo .jpg y no un .bmp convertido desde un .jpg pegado en un TDBImage?
Algo debo tener mal, porque lo he probado con ADO+Access, BDE+Paradox e IBX+Firebird, y si no es un BMP da el error que menciona Ángel. Son las mismas tablas donde he probado el resto de ejemplos sin problema. Si no es mucho pedir, si tienes tu ejemplo a mano, ¿podrías añadir estas líneas justo antes del LoadFromStream para ver cada tipo según se cargan en el título de la ventana? (BMP=4D42, JPG=D8FF, PNG=5089, GIF=4947, TIF=4949) Código PHP:
Última edición por _Leo fecha: 24-07-2017 a las 23:17:07. |
#9
|
||||
|
||||
Hola _Leo
Cita:
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#10
|
||||
|
||||
¿Valdría en BCB 6? Si sigo usando BCB 6 es porque con XE3, que es el más moderno que tengo, no consigo aclararme en muchas cosas.
|
#11
|
||||
|
||||
Cita:
En las versiones actuales el cambio que mas dificulta las cosas con respecto al BCB6 es el Unicode que al principio es lo que más despista, pero una vez lo entiendes bien no es un gran problema, aunque si cuesta un poco más cuando trabajas con un proyecto viejo que cuando empiezas uno nuevo directamente con Unicode. Última edición por _Leo fecha: 25-07-2017 a las 15:34:22. |
#12
|
||||
|
||||
Cita:
|
#13
|
|||
|
|||
En algún momento tuve la necesidad de almacenar distintos formatos de imagenes en una base de datos, y no quice guardar extensión ni tipo de archivo almacenado.
Y encontré un componente (TimDBImage, http://www.marteens.com/ejemplos.htm) que después de estudiar su funcionamiento adapte a mis necesidades y lo deje en el ftp del club. Esta es la dirección Componente CLDBImagen.zip Ejemplo: CLDBImagen_Sample.zip Hasta ahora lo sigo utilizando con muy buenos resultados. Es para Delphi, pero creo que te puede dar luces de como realizar lo que necesitas en C++Builder. Saludos cordiales |
#14
|
||||
|
||||
Hola.
Primero que nada me disculpo con _Leo por las pruebas que tuvo que realizar por mi desacierto. Y para no dejar el caso inconcluso, este código muestra en un componente TImage los tipos de imagenes soportados y cuya firma sea evaluada y creada en consecuencia. Código PHP:
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 26-07-2017 a las 02:48:26. |
#15
|
||||
|
||||
Cita:
|
#16
|
||||
|
||||
Hola.
Cita:
Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#17
|
||||
|
||||
Muchas gracias.
|
#18
|
||||
|
||||
Hola.
Intenté con algunas opciones aconsejadas, adaptaciones de bibliotecas para Delphi, sin lograr resultados. Sin embargo encontré esta que parece prometer algo:tendrías que probarla ... Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#19
|
||||
|
||||
Probareos. Gracfias ecfisa.
|
#20
|
|||
|
|||
Aqui reviviendo temas resueltos y por si a alguien le es de ayuda.
Tratando un problema similar pero cargando mis imagenes en base 64, al final la cebecera puede o no ir en el binario por lo que no se puede identificar que tipo de archivo es hasta que se intenta representar (jpg, png, bmp), mi mejor opcion fue detectar la extension del archivo (esto no garantiza al 100% que sea el tipo de archivo indicado) y agregar la cabecera a mi cadena base64 (en el problema mencionado aqui seria añadir la extension/tipo de archivo en otro campo), en resumen no hay soluciones infalibles. Saludos. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Extraer una imagen tipo captcha de una web | (MAJ) | Trucos | 4 | 28-04-2020 08:54:59 |
Tipo para una imagen en un cgi-stand alone | velezbunzl | Internet | 0 | 16-07-2010 22:26:41 |
Tipo de imagen | edgwin | Gráficos | 1 | 18-01-2010 09:19:06 |
Tipo dato imagen | Ricardo Alfredo | Gráficos | 0 | 26-08-2005 20:25:16 |
Imagen Tipo Tiff, Ocr, Un Error!! | liz_hilton | Gráficos | 5 | 12-04-2005 18:55:11 |
|