FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Caso hipotético: llega tu jefe y por algún motivo (le han 'comido' el coco, le van a pagar una buena cantidad por ello, lo han abducido los extraterrestres, ...) te dice:
"hace falta que el programa visualice estos tipos de imágenes, ten la lista, lo necesito para ayer". Echas un vistazo a la lista y te encuentras con esto: +------------------------------------------------+ | Formatos de imágenes que debe leer el programa | +------------------------------------------------+ art, bmp, cin, cpt, dpx, exr, fpx, gif, iff, ilbm, lbm, jpeg, jpg, jpg2, jp2, mng, pbm, pcd, pcx, pgm, png, ppm, psd, psp, tgam tpic, tiff, tif, wbmp, xbm, xcf, xpm, eps, pic, pct, ai, cdr +------------------------------------------------+ ¿Cómo lo resolverías? |
#2
|
|||||||
|
|||||||
Cita:
Y la verdad es que desconozco quien es el autor original, e inicial, del patrón Fábrica pero le agradezco que los haya publicado y dado a conocer para que el resto de la gente lo utilice. Cita:
Lo que hace Delphi, y cualquier otro IDE/lenguaje que trabaje con estos y otros más formatos es generar en tiempo de ejecución una representación visual de los formatos a nivel de mapa de bits. Más físicamente, almacenados en disco cada formato tiene su propio sistema. El único que almacena la imagen como es, a mapa de bits, es el Bitmap. Los otros formatos no almacenan los mapa de bits de forma cruda, más bien utilizan algoritmos de compresión. Para mostrar una imagen, que no sea bmp, se ha de hacer una conversión adecuada ya que todo se resume a un mapa de bits. Gracias al poder de codecs es que se le dota a los equipos soportar formatos y éstos hacen el trabajo tras bambalinas. Cuando tu mandas el contenido al BLOB este recibe lo que venga... si le pasas un bmp será la información binaria del bmp, si le pasas un jpg será la información binaria de éste... nunca una conversión. Delphi cuenta con la clase base TGraphic justamente para que luego cada descendiente de ella implemente los métodos polifórmicos especificamente diseñados a cada formato al que abstrae. El JPEGImage es un descendiente de este TGraphic, como así también lo es TIcon, y otras. Esto le permite que se le puedan diseñar más clases específicas a nuevos formatos. Cita:
Con lo cual todo el esfuerzo que te cuesta es simplemente reemplazar el TImage por el extendido y algunos posibles ajustes menores que no te van a hacer temblar el resto del código ni atarse a la lógica de tu programa. Cita:
Vuelvo a aclarar, Delphi no almacena bitmap crudo. Si tu cargas en el TImage un jpeg sigue siendo físicamente un jpg. Es a efectos de visualización que todo formato es llevado hacia un mapa de bits, excepto el bitmap claro está porque así es la única forma en como es posible mostrar una imagen... Una imagen es justamente eso: un conjunto (mapa) de pixeles. Lo que hace cada formato es aplicar algún algoritmo de reducción/compresión (con y/o sin pérdida). Por ello es que por ejemplo si vas a Gimp y editas una imagen png, visualmente ves a nivel de pixeles. Luego el programa hace el paso inverso y genera un archivo respetando la estructura del formato png. Y así es con todos los formatos... estructura <-> mapa de bits. Pero que quede claro: el TImage no almacena ni convierte físicamente un jpg en bitmap.... ni hace eso en las nuevas versiones con los nuevos formatos que soporta. Cita:
Es a vista de eso que te sugiero de que cambies el enfoque porque de ese modo se te hará más fácil en el futuro. Cita:
Bien por ti si ahora es JPEG o un BMP. Pero entonces, ¿Porqué dijiste entonces que se trata de una etapa inicial si en realidad no vas a ir por más? ¿Porqué tanto lío entonces para tratar de poner código INDEPEDIENTE de formatos como lo has señalado al comienzo? La verdad es que te contradices, porque dejaste en claro que querías un sistema que pueda ser capaz de no verse atado a un único formato pero ahora dices que sólo quieres dos. Cita:
Y ya que tu crees que todo se resumen a guardar en bmp dime entonces, ¿porque has tenido que disponer el TJPGEImage? ¿Que no es que todo es bitmap? si en verdad lo que más buscas es que se resuma a bmp entonces hazte más fácil la vida: ¡guarda y trabaja únicamente con bmp! Al momento de guardar el contenido al BLOB convierte el formato del que sea a bmp (que como dices, hay rutinas que hacen eso... ha... y que no son tuyas) y de ese modo al momento de leer el BLOB ya te evitas todo problema y lees siempre un TBitmap. De paso ya no necesitas hacer nada de try finally y como no te gusta tener un campito más ¡te lo evitas! Y otro plus, como ya es un TBitmap puedes realizar sobre éste operaciones de tratamiento de imagen como filtrado, etc. Saludos, |
#3
|
||||
|
||||
Por cierto, desde hace un tiempo que se viene diciendo y aconsejando que se deje de emplear jpg/jpeg y se pase a png; no sólo por una cuestión de licencias y derechos de autor sino también a que png es mucho mejor ante las pérdidas de calidad (e incluso pesa menos).
PNG ya es bastante habitué. Saludos, |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
TClienDataSet Problemas con Campos Blob y Campos Calculados | LEVV | Conexión con bases de datos | 2 | 11-05-2012 01:25:43 |
DB firebird meter y sacar texto e imagenes a campos blob , con delphi | JXJ | Firebird e Interbase | 1 | 11-10-2010 11:52:34 |
Imagenes en campos BLOB y Delphi 7 | s_dominguez | Varios | 0 | 15-02-2005 17:08:01 |
Imagenes en Campos Blob | subzero | Firebird e Interbase | 11 | 26-11-2004 17:27:59 |
Imagenes(BLOB) Firebird con VB6 | pzhero | Firebird e Interbase | 5 | 06-05-2004 15:32:45 |
|