ImageAsset转base64的问题

事情是这样的。项目里需要做一个游戏大厅。里面坐了很多人。。。
然后这些人都是有头像的嘛。

本着不要重复下载的想法。
想在assetManager.loadRemote之后把得到的这个ImageAsset存起来。
下次如果发现本地有的话就不下载了

web端使用indexedDB存储。原生使用native.fileUtils

那么问题来了这个ImageAsset转base64,然后再从base64转回来的方法大佬们有没有参考?
我自己写或者问ai都不行用不成。

然后还有个问题。我如果转好了字符串。存文件的时候文件后缀怎么存?

// // 创建一个新的纹理

    // var texture = new Texture2D();

    // var image = new Image();

    // // 加载图片并在加载完成后创建 spriteFrame

    // image.onload = () => {

    //     texture.reset(

    //         {

    //             width: image.width,

    //             height: image.height,

    //         }

    //     );

    //     texture.uploadData(image, 0, 0);

    //     texture.loaded = true;

    //     var sp = new SpriteFrame();

    //     sp.texture = texture;

    //     this.captchaSprite.spriteFrame = sp;

    // };

    // image.src = base64Image;  这个方法,web可以,安卓不行,不知道为什么

const htmlString = `<html style=“width:100%;height:100%;overflow:hidden;”><body>

    <img  style='display:block;width:120%;height:120%;object-fit:cover;' src='${base64Image}' />

    \<\/body\>\<script\>

    \<\/script\>\<\/html\>`;

    const blob = new Blob([htmlString], { type: 'text/html' });

    const url = URL.createObjectURL(blob);

    this.webView.url = url; 这个安卓和web都可以,但是要启动一个webview

谢谢大佬。我试试

直接存远程下载下来的图片到文件夹不行么?

?怎么操作?
大佬求教

/**

 * @description:  下载文件到本地

 * @param {string} url 请求URl

 * @param {string} savePath 保存 url

 * @param {function} callback 下载回调

 */

//正在下载的

private downloadingList = {};

public downloadFile(url: string, savePath: string, callback: (result: boolean, data: any) => void) {

    if (sys.isNative && sys.os == sys.OS.ANDROID) {

        if (this.downloadingList[url]) {

            this.downloadingList[url].push(callback);

            return;

        }

        if (!this.isValidMD5FileName(url)) {

            Logger.log("_fileCacher,downloadFile url不合法", url)

            callback(false, null);

            return;

        }

        this.downloadingList[url] = [callback];

        const downloader: native.Downloader = new native.Downloader();

        downloader.onSuccess = (task: native.DownloadTask) => {

            for (let cb of this.downloadingList[url]) {

                cb(true, savePath)

            }

            delete this.downloadingList[url];

        }

        Logger.log("_fileCacher,downloadFile url", url);

        downloader.onError = (task: native.DownloadTask, errorCode: number, errorCodeInternal: number, errorStr: string) => {

            Logger.log("_fileCacher,download fail", errorCode, errorCodeInternal, errorStr)

            for (let cb of this.downloadingList[url]) {

                cb(false, url)

            }

            delete this.downloadingList[url];

        }

        //创建下载任务

        downloader.createDownloadTask(url, savePath, "imageDownloadTask");

    }

}

哇感谢大佬!