【问题标题】:Getting image size without locking the file in WPF获取图像大小而不在 WPF 中锁定文件
【发布时间】:2011-11-06 11:33:47
【问题描述】:

在 WPF 应用程序中,我在真正加载它之前获取图像大小(宽度和高度)(因为我正在以减小的大小加载它......)并且我正在使用这个 C# 代码来获取它:

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

这很好用,但它会锁定我以后想被应用程序删除但不能删除的图像文件。我知道,如果我设置 BitmapCacheOption.OnLoad 它可以解决问题,但它会加载图像,所以我失去了通过减小​​尺寸(使用 DecodePixelWidth 等)加载它所获得的优势。

那么有人知道如何在不锁定图像的情况下预先获取图像大小吗?

【问题讨论】:

    标签: c# wpf image


    【解决方案1】:

    也许你应该在你得到你的图像大小后在使用块中使用流来解除锁定

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

    【讨论】:

    • 感谢 Stecya,它有效!实际上,与此同时,我自己找到了答案,并且与您写的一样逐字逐句。只有一件事,必须在 using 块之外声明 Size 以供以后使用(但我知道你知道)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 2013-03-25
    相关资源
    最近更新 更多