Bir DICOM çoklu çerçeve görüntüsünü oynatmak için bir uygulama yazmam gerekiyor. Her çerçeve JPEG formatında saklanır. Tüm kareler tek bir dosyada ardışık olarak saklanır. Şu anda, her çerçeve verileri okumak ve görüntüleme için bir Bitmap oluşturmak için aşağıdaki rutin geçmek:JPEG görüntülerini sıkıştırmanın en hızlı yolu nedir? 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;
}
Test sırasında, her şey yukarıdaki rutin performans optimum olmadığını dışında çalışıyor. 800x600 çerçeve boyutu için, bu yordamda geçen süre 0msec ve 15msec (nedenini bilmiyorum). 1024x768 çerçeve boyutu için gereken süre 15msec veya 31msec'dir. Amacım görüntü verisini akışa almak ve görüntüyü (1024x768 sürümü) 60Hz'de bir kare düşürmeden oynatmaktır. Bu, JPEG çerçevesini sürekli olarak 15 msn içinde açmam gerektiğini gösterir. Yani sorum şu, bunu yapmanın en iyi yolu nedir?
Teşekkürler! JpegBitmapDecoder tarafından döndürülen BitmapFrame'in nasıl çizileceğine dair bir örnek verebilir misiniz? Artık Graphics.DrawImage() öğesini OnPaint() içinde kullanamıyorum. – JohnY
GDI + kullanarak bir WPF görüntüsü çizmek bir acı olacaktır. WinForms'a işlemek zorundaysanız, GDI + sınıflarına bağlı kalın. –