2011-11-06 63 views
4

在WPF應用程序中,我在真正加載圖像時獲取圖像大小(寬度和高度)(因爲我使用縮小的大小加載圖像...)並且使用此C#代碼得到它:在沒有鎖定WPF文件的情況下獲取圖像大小

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

這工作正常,但它然後鎖定圖像文件,我稍後想刪除的應用程序,但不能。我知道,如果我設置BitmapCacheOption.OnLoad它解決了這個問題,但它然後加載圖像,所以我失去了我想要獲得的優勢與減小的大小(使用DecodePixelWidth等)。

因此,任何人都知道如何事先獲取圖像大小而不鎖定圖像?

回答

4

也許你應該使用塊中使用流你得到你的圖像大小

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); 
} 
+0

感謝Stecya後刪除鎖,它的作品!其實,同時我自己也找到了答案,它與你寫的是一樣的字母。只有一件事,Size必須在使用塊之外聲明以供以後使用(但我知道你知道這一點)。 –

相關問題