Determinar el tipo de imagen a nivel de dato
Seguramente, todos los que hemos trabajado con campos Blob para guardar imágenes nos hemos querido "modernizar" y en vez de guardar BMPs intentamos guardar JPEGs o PNGs, las razones están fuera del alcance de este trick, así que no las quiero mencionar.
Pero que pasa si quieres recuperar esas imágenes para guardarlas en un archivo? Tendrás problemas, a menos que las guardes en *.BMP (archivos enormes). Desde este punto tomo en cuenta que conocen como cargar en un objeto TBitmap el contenido de un campo Blob. Fijándome en el código fuente de la unidad Graphics de Delphi, leí que la forma de determinar el tipo de imagen que hace el objecto TImage es cabernicola, lo hace por medio de la extensión del nombre de archivo. Esta unidad no implementa algún recurso para determinar el formato de la imagen a nivel binario. Por esta razón es que me dispuse a escribir el siguiente código, que quiero compartirlo con ustedes. A como se ve, esta función está también lejos de ser perfecta, pero a su vez es mucho más segura que la forma en que lo hace Delphi. En mi caso, en el sistema que me encuentro desarrollando, solo espero manejar imágenes BMP, JPG y PNG, es por esa razón que el código solamente soporta este tipo de imágenes, pero muy facimente se puede escalar. ¿Cómo utilizarlo? De esta forma tendrás una forma segura de cargar imágenes en un objecto TGraphic y salvarlas en un archivo. Saludos. |
Me gusto mucho el truco... Me resulto muy interesante... sobretodo porque no sabia que se podian devolver tipos de datos e instanciar una clase como lo hiciste.
Siempre se aprende algo nuevo... Gracias! |
No hay de que adearmas, es un placer compartir. :-)
|
Puedes mejorar la funcion mirando este enlace http://www.clubdelphi.com/foros/showthread.php?t=12174
|
La franja horaria es GMT +2. Ahora son las 07:07:26. |
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