Ho bisogno di scrivere un'app per riprodurre un'immagine DICOM multiframe. Ogni frame è memorizzato in formato JPEG. Tutti i frame sono memorizzati consecutivamente in un unico file. In questo momento, ho letto ogni dati telaio e passarlo al seguente routine per costruire un bitmap per la visualizzazione:Qual è il modo più veloce per decomprimere le immagini JPEG in 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 prova, tutto funziona bene tranne che le prestazioni nella routine di cui sopra non è ottimale. Per le dimensioni del frame 800x600, il tempo impiegato da questa routine è 0msec e 15msec (non so perché). Per le dimensioni del fotogramma 1024x768, il tempo richiesto è 15msec o 31msec. Il mio obiettivo è quello di trasmettere in streaming i dati dell'immagine e riprodurre l'immagine (versione 1024x768) in 60 Hz senza rilasciare una cornice. Ciò suggerisce che devo decomprimere costantemente il frame JPEG entro 15msec. Quindi la mia domanda è qual è il modo migliore per farlo?
Grazie! Potresti darmi un esempio di come disegnare il BitmapFrame restituito da JpegBitmapDecoder? Non riesco più a utilizzare Graphics.DrawImage() in OnPaint(). – JohnY
Disegnare un'immagine WPF usando GDI + sarà un problema. Se devi eseguire il rendering su WinForms, segui le classi GDI +. –