| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- cc.Class({
- extends: cc.Component,
- properties: {
-
- },
- start()
- {
- let self =this;
- let url = '';
- this.scheduleOnce(function(){
- url = self.screenshot().src;
- console.log(url)
- },2);
-
- // this.scheduleOnce(function(){
- // self.setConsoleImage(url);
- // },4);
-
- },
- screenshot() {
- let node = cc.director.getScene().getChildByName("Canvas").getChildByName("screenshot");
- let camera = node?.getComponent(cc.Camera);
- if(!node){
- node = new cc.Node("screenshot");
- node.parent = cc.director.getScene().getChildByName("Canvas");
- camera = node.addComponent(cc.Camera);
- }
-
- // 设置你想要的截图内容的 cullingMask
- // camera.cullingMask = 0xffffffff;
-
- // 新建一个 RenderTexture,并且设置 camera 的 targetTexture 为新建的 RenderTexture,这样 camera 的内容将会渲染到新建的 RenderTexture 中。
- let texture = new cc.RenderTexture();
- texture.initWithSize(cc.visibleRect.width, cc.visibleRect.height);
- camera.targetTexture = texture;
-
- // 渲染一次摄像机,即更新一次内容到 RenderTexture 中
- camera.render();
-
- // 这样我们就能从 RenderTexture 中获取到数据了
- let data = texture.readPixels();
-
- // 接下来就可以对这些数据进行操作了
- let canvas = document.createElement("canvas");
- let ctx = canvas.getContext("2d");
- canvas.width = texture.width;
- canvas.height = texture.height;
-
- let width = texture.width;
- let height = texture.height;
-
- let rowBytes = width * 4;
- for (let row = 0; row < height; row++) {
- let srow = height - 1 - row;
- let imageData = ctx.createImageData(width, 1);
- let start = srow * width * 4;
- for (let i = 0; i < rowBytes; i++) {
- imageData.data[i] = data[start + i];
- }
-
- ctx.putImageData(imageData, 0, row);
- }
-
- let dataURL = canvas.toDataURL("image/jpeg");
- let img = document.createElement("img");
- img.src = dataURL;
- return img;
- },
- setConsoleImage(url) {
- var img = new Image();
- img.style.display = "none";
-
- document.body.appendChild(img);
- img.src = url;
- img.onload = function () {
- var css = [
- "padding: " + (img.height / 2 - 8) + "px " + img.width / 2 + "px;",
- "line-height: " + img.height + "px;",
- "background-image: url(" + url + ");",
- ];
- console.log("%c ", css.join(""));
- };
- }
- });
|