Использование классов визуализации WPF - получение размеров изображения без чтения всего файла

Ссылка this post Я хочу, чтобы читать высоту и ширину файлов изображений без чтения во весь файл в память.

В сообщении Frank Krueger упоминается, что есть способ сделать это с некоторыми классами визуализации WPF. Любая идея о том, как это сделать?

Ответ 1

Это должно сделать это:

var bitmapFrame = BitmapFrame.Create(new Uri(@"C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\Winter.jpg"), BitmapCreateOptions.DelayCreation, BitmapCacheOption.None);
var width = bitmapFrame.PixelWidth;
var height = bitmapFrame.PixelHeight;

Ответ 2

Следуя рекомендации сэра сока, вот какой-то альтернативный код, который позволяет избежать блокировки файла изображения:

using (var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
{
    var bitmapFrame = BitmapFrame.Create(stream, BitmapCreateOptions.DelayCreation, BitmapCacheOption.None);
    var width = bitmapFrame.PixelWidth;
    var height = bitmapFrame.PixelHeight;
}