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

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

В посте Фрэнка Крюгера упоминается, что есть способ сделать это с некоторыми классами WPF Imaging. Есть идеи, как это сделать ??

Ответы [ 2 ]

44 голосов
/ 24 апреля 2009

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

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;
19 голосов
/ 06 августа 2014

В соответствии с рекомендацией сэра Джусса, вот несколько альтернативных кодов, позволяющих избежать блокировки файла изображения:

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;
}
...