Layabox 请求微信头像

查了很多关于laya获取微信头像的方式, 但都是有限制或巨麻烦.

基本分两类: 服务器获取微信头像保存在本地服务器, 然后回传客户端.

用类似hack的方式获取头像, 然后层级有问题. 在就是跨域.

我尝试直接用laya的httpRequest请求, 没有跨域问题, 已测试代码:

// -------------------微信头像获取器-------------------
// 头像缓存
var headCache = {};

/**
 * 微信头像获取器
 * @param {头像Url} headUrl 
 * @param {显示头像Img} showImg 
 */
function getWXHead(headUrl, showImg){
    if(headCache[headUrl] != undefined){
        showImg.skin = (headCache[headUrl]);
    }else{
        // 创建请求
        let httpRequest = new Laya.HttpRequest();
        httpRequest.once(Laya.Event.COMPLETE, this, (data)=>{
            let byte = new Laya.Byte(data);
            byte.writeArrayBuffer(data, 4);
            let blob = new Laya.Browser.window.Blob([data], {type:'image/apng'});
            let url = Laya.Browser.window.URL.createObjectURL(blob);
            showImg.skin = (url);
            // 缓存
            headCache[headUrl] = url;
        });
        httpRequest.once(Laya.Event.ERROR, this, (data)=>{
            // 输出错误
            console.error(data);
        });
        // 发送请求
        httpRequest.send(headUrl, '', 'get', 'arraybuffer');
    }
}
// -------------------微信头像获取器-------------------

两个参数, 第一个是头像的url, 第二个是laya的image控件. 效果还不错, 服务器也能减轻带宽和储存压力.

你可能感兴趣的:(Layabox 请求微信头像)