DICOMマルチフレーム画像を再生するにはアプリを書く必要があります。各フレームはJPEG形式で保存されます。すべてのフレームは、1つのファイルに連続して格納されます。今、私は、各フレームのデータを読み出して表示用のビットマップを構築するために、次のルーチンに渡し:C#でJPEG画像を解凍する最も速い方法は
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;
}
試験中、すべてのものは、上記のルーチンでのパフォーマンスが最適ではないことを除いて正常に動作します。 800x600のフレームサイズの場合、このルーチンにかかる時間は0msecと15msecです(私には分かりません)。 1024×768のフレームサイズの場合、所要時間は15msecまたは31msecです。私の目標は、フレームを落とすことなく60Hzで画像データをストリーミングして、画像(1024x768バージョン)を再生することです。つまり、JPEGフレームを15msec以内に圧縮解除する必要があります。だから私の質問は、これを行うためのより良い方法は何ですか?
ありがとうございます! JpegBitmapDecoderから返されたBitmapFrameを描画する方法の例を教えてください。私はもうGraphics.DrawImage()をOnPaint()で使用することはできません。 – JohnY
GDI +を使用してWPFイメージを描画するのは苦労します。 WinFormsにレンダリングする必要がある場合は、GDI +クラスを使用してください。 –