WPF - 从互联网 URL 获取图像宽度/高度

Posted

技术标签:

【中文标题】WPF - 从互联网 URL 获取图像宽度/高度【英文标题】:WPF - Getting Image Width/Height from internet URL 【发布时间】:2013-11-08 06:53:21 【问题描述】:

如果使用以下代码将图像存储在我的计算机中,我已经设法获取图像的宽度/高度:(完整路径是文件的完整位置)

        var bitmapFrame = BitmapFrame.Create(new Uri(FullPath), BitmapCreateOptions.DelayCreation, BitmapCacheOption.None);
        var width = bitmapFrame.PixelWidth;
        var height = bitmapFrame.PixelHeight;

但第二次我尝试将 FullPath 更改为 Internet 图像(例如 http://www.interweb.in/attachments/pc-wallpapers/16187d1222942178-nature-wallpaper-nature-summer-wallpaper.jpg)时,宽度和高度将无法确定所需的实际值,而只会保留为“1”的值。

我已经在这里坐了几个小时,试图找出问题所在并解决问题,但没有成功。 非常感谢您!

【问题讨论】:

【参考方案1】:

试试这个。对于网络UriImageSource会异步下载图片,避免阻塞。

    var bitmapFrame = BitmapFrame.Create(new Uri(FullPath), BitmapCreateOptions.None, BitmapCacheOption.None);
    if(bitmapFrame.IsDownloading)
    
        bitmapFrame.DownloadCompleted += (e, arg) =>
            var width = bitmapFrame.PixelWidth;
            var height = bitmapFrame.PixelHeight;

        
    

您想等待DownloadCompleted 事件。

【讨论】:

我尝试复制您的建议(我唯一更改的是将参数名称从 e 更改为 t,因为我正在单击按钮进行测试)但值仍然是 1。 我发现了问题,它需要是 BitmapCreateOptions.None 而不是 BitmapCreateOptions.DelayCreation 。非常感谢:)!

以上是关于WPF - 从互联网 URL 获取图像宽度/高度的主要内容,如果未能解决你的问题,请参考以下文章

php 从 url 获取宽度和高度 >=200 的所有图像更快

PHP - 在不加载图像的情况下获取有关图像(高度和宽度)的信息

从 WordPress 图像 URL 中删除图像宽度和高度

随着窗口大小的变化,如何在wpf中动态测量网格宽度/高度

我可以从android中的uri获取图像文件的宽度和高度吗?

从字节数组数据中获取图像宽度和高度