Je dois écrire une application pour lire une image multitrames DICOM. Chaque image est stockée au format JPEG. Toutes les images sont stockées consécutivement dans un fichier. En ce moment, je lis sur chaque donnée de trame et de le transmettre à la routine suivante pour construire un Bitmap pour l'affichage:Quel est le moyen le plus rapide de décompresser des images 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;
}
Pendant l'essai, tout fonctionne bien sauf que la performance dans la routine ci-dessus n'est pas optimale. Pour la taille d'image 800x600, le temps qu'il faut dans cette routine est soit 0msec et 15msec (je ne sais pas pourquoi). Pour la taille d'image 1024x768, le temps nécessaire est de 15 ms ou 31 ms. Mon objectif est de diffuser les données d'image dans et lire l'image (version 1024x768) en 60Hz sans laisser tomber une image. Cela suggère que je dois décompresser le cadre JPEG en 15 ms constamment. Alors ma question est quelle est la meilleure façon de faire cela?
Merci! Pourriez-vous me donner un exemple de la façon de dessiner le BitmapFrame retourné par le JpegBitmapDecoder? Je ne peux plus utiliser Graphics.DrawImage() dans OnPaint(). – JohnY
Dessiner une image WPF en utilisant GDI + sera pénible. Si vous devez rendre à WinForms, alors restez avec les classes GDI +. –