请问下大佬们远程图片没有png或者jpg后缀的话怎么加载?

http://pfs.pinduoduo.com/phone_adx/9678abba51ef233d3209d88f581222b7.jpg?sign=q-sign-algorithm%3Dsha1%26q-ak%3DoHMACf6FzEmrUMOe8Hman8EKSbi2WB3e%26q-sign-time%3D1619582220%3B1619927820%26q-key-time%3D1619582220%3B1619927820%26q-header-list%3D%26q-url-param-list%3D%26q-signature%3D4bf2e0ad0b53691c58e985530f3dc3f226c95233

类似这种图片url。。。
cc.loader.load({ url: imgDown, type: “png” }, (err, tex: cc.Texture2D) => {
if (err) {
console.log(‘加载图片url错误’, JSON.stringify(err))
return;
}
});
这样子加载就加载不了。。。
有没有大佬有什么加载方案。。主要是返回的图片url后缀不固定。。有没有什么好的办法?

你用的是哪个版本的?2.2.4用cc.assetManager.loadRemote我看是可以的

本地可以加载。。。但是打包到手机上就一直
Download file failed

按理说是支持的,我也没有遇见过,建议你联系一下官方那~

  • 手动拼接

let url = "XXX";
let subfix = /\?/.test(url) ? "&t=a.png" : "?t=a.png"
!/.png$|.jpg$|.jpeg$/i.test(url) && (url+=subfix);
//后续逻辑。。。

拼接好像不大行,他的那个url参数是固定的,改了就授权失败了

这个后缀不是jpg吗,你把问号后面的去掉,拿到后缀名,type那里填后缀就行了

cc.loader.load({ url: imgDown, type: “image” }, (err, tex: cc.Texture2D) => {

});
试试

后缀没有的时候默认jpg,完美解决
cc.loader.load({ url: imgDown, type:string = “jpg” }, (err, tex: cc.Texture2D) => {
if (err) {
console.log(‘加载图片url错误’, JSON.stringify(err))
return;
}
});

cc.assetManager.loadRemote<cc.Texture2D>(‘图片地址’ + ‘?aa=aa.jpg’, (err, res) => {
this.img.spriteFrame=new cc.SpriteFrame(res);
});

/**
 * 加载http远程图片
 * @param url 图片地址
 * @param callback 回调
 */
loadHttpImage(url:string,callback:(frame:cc.SpriteFrame)=>void){
    if(url && callback){
        cc.assetManager.downloader.downloadDomImage(url,(err:Error,element:HTMLImageElement)=>{
            if(!err && element){
                let texture=new cc.Texture2D()
                texture.initWithElement(element)
                let frame=new cc.SpriteFrame()
                frame.setTexture(texture)
                callback(frame)
            }else{
                callback(null)
            }
        })
    }
}

看下我的解决方案,跟楼上的差不多。