要怎么远程加载 jfif 格式的图片?

  • Creator 版本:3.6.2

  • 目标平台: 全部

https://baike.baidu.hk/item/JPEG文件交換格式/20835325

JPEG文件交換格式(JPEG File Interchange Format,JFIF)是一個圖像文件格式標準。它是一種交換匹配JPEG交換格式(JIF)標準的JPEG編碼文件的格式。

我们项目在接入脸书facebook的头像时发现api回传的是jfif格式的档案

示例圖片位置
https://platform-lookaside.fbsbx.com/platform/profilepic/?asid=5788508827906573&height=100&width=100&ext=1678248816&hash=AeRumSltuHMkZCT3MFE

原本认为只要在assetManager.downloader跟parser单纯补上jfif格式,下载与解析都使用引擎原本的downloadImage跟parseImage就可以了,但最终的结果好像还是无法成功获取正确的ImageAsset

加载方式

cc.assetManager.loadRemote(“https://platform-lookaside.fbsbx.com/platform/profilepic/?asid=5788508827906573&height=100&width=100&ext=1678248816&hash=AeRumSltuHMkZCT3MFE”, { ext: “.jfif” }, (error: Error, texture: cc.ImageAsset) => {})

有没有人也加载过这种格式的图片?求大佬帮助!!

其实格式都一样,你直接当jpg加载就行了。

let url = "https://platform-lookaside.fbsbx.com/platform/profilepic/?asid=5788508827906573&height=100&width=100&ext=1678248816&hash=AeRumSltuHMkZCT3MFE2"
        cc.assetManager.loadRemote(url, { ext: ".jpg" }, (error, texture) => {
            cc.log(error, texture);
            cc.find("test_node", this.node).getComponent(cc.Sprite).spriteFrame = new cc.SpriteFrame(texture);
        })

大佬你那个方法是2.4版本的吧

我刚刚试了下确实2.4版这样就能成功加载了

3.6版loadRemote回的图是ImageAsset

就算换成jpg也没办法获取正确的ImageAsset


测试正常显示

我懂了,我把载入完的资源回调给上层去换图就会有问题

直接在回调里设定spriteframe就正确了

我再自己确认下问题