批量保存图片

有个需求,可以理解为就像做名片一样,一样的背景图,需要修改一些编号文字之类的,然后每个编号生成一张图片并保存,这个怎么在cocos里实现?

之前虽然用cocos也算做了一些事儿,但这个需求好冷门,一下子难住了,有点懵逼,有大佬能指点一下么?

论坛里很多啊,用一个专门拍照的摄像机来拍摄你需要截图的元素分组,然后render一份texture

保存成文件怎么搞?

参考楼上大佬的获得数据,然后这是我以前在论坛里找大佬要的网页端保存方案,虽然我没搞明白原理,但是亲测可行

private onSaveClick () {
    let data = this.parsingData();  // 解析数据
    var textFileAsBlob = new Blob([data], { type: 'text' });
    var downloadLink = document.getElementById("a") as HTMLAnchorElement;
    if (!downloadLink) {
        downloadLink = document.createElement('a');
    }
    downloadLink.download = DataManager.getInstance().getFileName();
    downloadLink.innerHTML = 'Download File';
    if (window.webkitURL != null) {
        downloadLink.href = window.webkitURL.createObjectURL(textFileAsBlob);
    } else {
        downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
        downloadLink.onclick = function () {
            if (downloadLink) document.body.removeChild(downloadLink);
        };
        downloadLink.style.display = 'none';
        document.body.appendChild(downloadLink);
    }
    downloadLink.click();
}

大佬,我没搞定
几个问题请教一下:

  1. let data = this.parsingData(); // 解析数据 ----------> 这一行我是不是可以替换成data就是我要存的那张图片?
  2. 这个’DataManager’是干啥的啊?我要写这个东西么?
  3. 我改了1,把DataManager这一行注释掉之后,跑程序的时候界面白屏,显示[Object HTMLImageElement],不是很懂该怎么搞…

麻烦大佬指点指点。

:rofl:这是我自己用的。。。本意是发出来参考的,第一个data改成你自己需要保存的文件内容,第二个datamanager那个getfilename是获取需要保存为啥文件名,你自己可以随便写,字符串就好,我是自己做的地图编辑弄了个类管理地图数据的

大佬给力!原来download那句不写就在页面中打开而不是下载了,加了就下载文件了。

然鹅,下载的是txt的,里面内容是这个 [object HTMLImageElement],我把你写的“a”改成其他名字,就不下载了。。。怎么才能下载图片啊。。。

另外,我试过传下面这个作为data,然后这个txt文件里包含的是[object HTMLImageElement]
image

然后我又试着传了下面这个,结果txt里变空了,这个spriteFrame我测试过,不是空图片,是有图像的,所以应该传什么作为data能把图片存下来呢?
image

这里跟你需求有出入,我这里是保存的文件
刚在网上搜了一份帖子你可以看一下:ccc各平台截图保存
网页端主要这两个方法改一下数据和Blob自己试一下吧
base64Img2Blob_web(code){
var parts = code.split(’;base64,’);
var contentType = parts[0].split(’:’)[1];
var raw = window.atob(parts[1]);
var rawLength = raw.length;

    var uInt8Array = new Uint8Array(rawLength);

    for (var i = 0; i < rawLength; ++i) {
      uInt8Array[i] = raw.charCodeAt(i);
    }

    return new Blob([uInt8Array], {type: contentType}); 
},

downloadFile_web (fileName, content){      
    var aLink = document.createElement('a');
    var blob = this.base64Img2Blob_web(content);
  
    var evt = document.createEvent("MouseEvents");
    evt.initEvent("click", false, false);
    aLink.download = fileName;
    aLink.href = URL.createObjectURL(blob);

    aLink.dispatchEvent(evt);
},

————————————————
版权声明:本文为CSDN博主「音乐男」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:creator 各种平台截图保存的实现_YinLeNan的专栏-CSDN博客

2赞

好的,我去试试的。顺便大佬能解答一下就是你的那个createElement(“a”),里面为啥是a么?就不大懂,想学学。

大佬太给力了!你找的那个例子,虽然里面有些东西我还没理解,但已经调通了!多谢大佬!感谢大佬!祝大佬有无数女朋友!

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。