| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Vie 21 Jul, 2017 6:35 pm Asunto: ¿Qué tipo de imagen es? |
|
|
Tengo una base de datos en Firebird y 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")); |
me funicona bien, pero si es un BMP me da un error Bitmap image is not valid. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Sab 22 Jul, 2017 8:44 pm Asunto: Re: ¿Qué tipo de imagen es? |
|
|
| Angel escribió: | | me funicona bien, pero si es un BMP me da un error Bitmap image is not valid. |
Supongo que quieres decir lo contrario, que si no es un BMP (por ejemplo un JPEG) da ese error.
Puedes probar algo así:
| 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);
} |
|
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
|