Necesito escribir una aplicación para reproducir una imagen de multitrama DICOM. Cada cuadro está almacenado en formato JPEG. Todos los marcos se almacenan consecutivamente en un archivo. En este momento, voy a leer los datos de cada frame y pasarlo a la siguiente rutina para construir un mapa de bits para la exhibición:¿Cuál es la forma más rápida de descomprimir imágenes JPEG en C#
Bitmap CreateBitmap(byte[] pixelBuffer, int frameSize)
{
Bitmap image = null;
try
{
long startTicks = DateTime.Now.Ticks;
MemoryStream pixelStream = new MemoryStream(pixelBuffer, 0, frameSize);
image = new Bitmap(pixelStream);
loadTime = DateTime.Now.Ticks - startTicks;
}
catch (Exception ex)
{
Log.LogException(ex);
}
return image;
}
Durante la prueba, todo funciona bien, excepto que el rendimiento en la rutina anterior no es óptima. Para el tamaño de fotograma de 800x600, el tiempo que lleva en esta rutina es 0 ms y 15 ms (no sé por qué). Para el tamaño de fotograma de 1024x768, el tiempo que toma es 15 mseg o 31 mseg. Mi objetivo es transmitir los datos de imagen y reproducir la imagen (versión 1024x768) en 60Hz sin dejar caer un fotograma. Eso sugiere que tengo que descomprimir el cuadro JPEG dentro de 15 mseg constantemente. Entonces mi pregunta es ¿cuál es la mejor manera de hacer esto?
Gracias! ¿Podría darme un ejemplo de cómo dibujar el BitmapFrame devuelto por JpegBitmapDecoder? Ya no puedo usar Graphics.DrawImage() en OnPaint(). – JohnY
Dibujar una imagen WPF usando GDI + será un problema. Si tiene que renderizar a WinForms, entonces quédese con las clases de GDI +. –