BitmapImage处理网络图片,例如阿里云获取的图片。异步加载到需要显示的控件上。提升速度非常明显。...

想直接把网络图片赋给控件,又要下载又要缓存,速度非常慢。不流畅。

需要进行处理,异步加载会显著提升速度。方法如下:

        public static BitmapImage ByteArrayToBitmapImage(byte[] byteArray)
        {
            BitmapImage bmp = null;
            try
            {
                bmp = new BitmapImage();
                bmp.BeginInit();
                bmp.StreamSource = new MemoryStream(byteArray);
                bmp.EndInit();
            }
            catch
            {
                bmp = null;
            }
            return bmp;
        }

调用以上方法显示在控件中:

                
           //注:1
            string tttt = 获取的网络图片地址; Task t = new Task(() => { WebClient wc = new WebClient(); wc.Credentials = CredentialCache.DefaultCredentials; ///方法一: Byte[] pageData = wc.DownloadData(tttt); instance.Dispatcher.BeginInvoke(((Action)(() => { instance.imageBrush.ImageSource = ByteArrayToBitmapImage(pageData); } ))); }); t.Start();

注1:“System.InvalidOperationException”类型的异常在 WindowsBase.dll 中发生,但未在用户代码中进行处理
其他信息: 调用线程无法访问此对象,因为另一个线程拥有该对象。如果不定义一个string 类型的变量 转换 会报以上的错误。堆栈怎么就找不到了,定义一个就找到了。说这个意思。

图片经过这样处理就是控件先加载出来,图片慢慢加载出来,速度非常流畅。直接赋给控件图片和控件一起缓存非常迟钝。

 

转载于:https://www.cnblogs.com/Early-Bird/p/5526438.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值