Cita:
Empezado por radenf
He estado intentando cargar las imágenes en un TMemoryStream con el siguiente código:
Donde el ListBox contiene los strings de las rutas de las imágenes y a partir del MemoryStream cargar las imágenes en la CnsDMTable que se conecta al visor para mostrar las imágenes de formato .dcm
Sin embargo el stream sólo carga los strings de la ubicación de las imágenes como tales y no como archivos de imágenes, por lo que la carga finalmente es igual de lenta.
¿Cómo puedo cargar en un TMemoryStream o TFileStream las imágenes y no sus rutas de ubicación en el HD?
Agradezco sus valiosos aportes.
Saludos
|
Buenas de nuevo Radenf,
no, el MemoryStream no carga la ubicación de las imágenes sino la imagen (el fichero binario) memoria completamente que luego carga el DicomMultiviewer1 a través de ese memorystream. Pasar por un memorystream o incluso un Filestream no te va accelarerar la carga, creo yo, ya que muy probablemente, internamente, el CnsDCMTable tenga ese mecanismo implementado ya que tiene el metodo loadfromfile y loadfromstream (normalmente el loadfromfile suele ser una implementacion particular del loadfromstream donde se crea un stream a partir del nombre de fichero en parámetro y se pasa al loadfromstream, vamos el lo que tu has hecho en tu ejemplo).
Acabo de hacer pruebas con el DicomVCL para ver los tiempos de cargas que indicas estos son los tiempos:
100 img -> 0,875 s
250 img -> 3,8 s
500 img -> 13,5 s
Como puedes ver, la progresion no el lineal, con lo cual me extrañaria que sera realmente un problema de acceso al fichero (carga pura y dura), yo creo que es mas un problema de indexacion de la imagen en esa tabla interna en memoria que usa las DicomVCL (cuantas mas imagenes tengo, mas tiempo tardo en ordenarlas e indexarlas). He intentado ver si se puede desactivar la ordenación de la tabla durante la carga, pero no veo nada, la unica propiedad que hay es la de TCnsDMTable.ImageOrder, pero no permite un valor desactivado del estilo "dsNone".
No se si te ha ayudado...