Получение размера изображения без блокировки файла в WPF - PullRequest
5 голосов
/ 06 ноября 2011

В приложении WPF я получаю размер изображения (ширину и высоту) перед его реальной загрузкой (поскольку я загружаю его с уменьшенным размером ...), и я использую этот код C #, чтобы получить его:

BitmapFrame frame = BitmapFrame.Create(new Uri(path), BitmapCreateOptions.DelayCreation, BitmapCacheOption.None);
Size s = new Size(frame.PixelWidth, frame.PixelHeight);

Это работает нормально, но затем блокирует файл изображения, который я позже хочу удалить приложением, но не могу.Я знаю, что если установить BitmapCacheOption.OnLoad, это решит проблему, но затем загрузит изображение, поэтому я теряю преимущество, которое хочу получить, загружая его с уменьшенным размером (используя DecodePixelWidth и т.Как получить размер изображения заранее, не блокируя изображение?

1 Ответ

4 голосов
/ 06 ноября 2011

Возможно, вам следует использовать поток в блоке, чтобы снять блокировку после того, как вы получите размер изображения

using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read))
{
   BitmapFrame frame = BitmapFrame.Create(fileStream , BitmapCreateOptions.DelayCreation, BitmapCacheOption.None);
   Size s = new Size(frame.PixelWidth, frame.PixelHeight); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...