WP开发笔记-图片后台下载+缓存+占位符效果

实现类似新浪微博WP客户端的头像效果:先用默认图片占位,然后后台下载头像图片。下载完成之后,替换占位图片。同时增加缓存。 

内容比较长。

原理:注册image url依赖属性,赋值之后,后台创建webrequest下载图片,下载完成之后,替换占位图片。

1. 添加UserControl,使用默认图片:

<UserControl ...>
    <Grid x:Name="Grid">
        <Image x:Name="PngImage" Source="/Images/dark/cat.png" Stretch="Fill" />
    </Grid>
</UserControl>

2. 添加依赖属性:

public static readonly DependencyProperty ImageUrlProperty =
    DependencyProperty.Register("ImageUrl", typeof(string), typeof(ImageContainer), new PropertyMetadata(OnImageSourceChanged));

public string ImageUrl
{
  get
  {
    return (string)GetValue(ImageUrlProperty);
  }
  set
  {
    SetValue(ImageUrlProperty, value);
  }
}

3. 依赖属性的回调:

private static void OnImageSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            (d as ImageContainer).ShowImage();
        }

        private void ShowImage()
        {
            if (!string.IsNullOrEmpty(ImageUrl))
                ImageCacheService.SetImageStream(ImageUrl, SetImageSource);
        }
4. 添加ImageCacheService类,对外只公开SetImageStream方法( 这个cache类在下一篇文章里详解):
public static void SetImageStream(string imageUrl, Action<byte[]> callBack)
5. 图片下载完成之后,显示:
private void SetImageSource(byte[] data)
{
    Deployment.Current.Dispatcher.BeginInvoke(
        () =>
        {
            if (data == null)
                return;
            try
            {
                using (var memStream = new MemoryStream(data))
                {
                    memStream.Position = 0;
                    var bitmapImage = new BitmapImage();
                    bitmapImage.SetSource(memStream);
                    this.PngImage.Source = bitmapImage;
                }
            }
            catch
            {//not jpeg/png image:
            }
        });
}

截图效果(来自Chicken4WP):

这里查看示例代码:GitHub>>

示例代码说明:注意,示例代码仅作为演示用。如果需要了解详情,可以看Chicken4WP的源码。

转载于:https://my.oschina.net/wower/blog/146548

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WP-REST-API 是WordPress 的一种接口,它通过提供标准化的RESTful API,允许开发人员使用HTTP请求来访问和操作WordPress站点的内容和数据。通过这个接口,开发人员可以使用不同的编程语言和技术来与WordPress进行交互,从而使得开发更加灵活和自由。 JWT(JSON Web Token)是一种用于认证和授权的开放标准。它通过将用户信息和权限信息编码成一种加密的令牌,以实现跨服务器和跨域的身份验证。JWT 是由三部分组成的:头部、负载和签名。头部包含令牌的加密算法和类型信息,负载包含用户的相关信息,签名用于验证令牌的真实性和完整性。 WP-REST-API JWT整合了WordPress的REST API和JWT的认证机制,使得在使用WP-REST-API进行开发的过程中,可以增加身份验证和授权的功能。它允许开发人员在请求WordPress REST API时,通过在请求头或参数中提供有效的JWT令牌来验证用户的身份和权限,并根据令牌中的负载信息来进行授权。 WP-REST-API JWT的使用具有很多优势。首先,它提供了一种轻量级的身份验证方式,减少了开发的复杂性。其次,通过JWT令牌的机制,可以实现无状态的认证和授权,提高了性能和可扩展性。此外,JWT还提供了一种可靠的机制来防止伪造和篡改请求数据,增强了系统的安全性。 总而言之,WP-REST-API JWT为开发人员提供了一种方便、灵活和安全的方式来使用WordPress的REST API。它简化了身份验证和授权的过程,并通过使用JWT令牌提高了系统的性能和安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值