2.2.0 截图 缩小

@property(cc.Node)
target: cc.Node = null as any;

onLoad() { }

start() {

    let width = this.target.width;
    let height = this.target.height;


    let c_node = new cc.Node();
    c_node.parent = cc.director.getScene();
    let camera = c_node.addComponent(cc.Camera);

    // 设置你想要的截图内容的 cullingMask
    camera.cullingMask = 0xffffffff;
    // camera.zoomRatio = 1;
    console.log("camera.zoomRatio", camera.zoomRatio);

    // 新建一个 RenderTexture,并且设置 camera 的 targetTexture 为新建的 RenderTexture,这样 camera 的内容将会渲染到新建的 RenderTexture 中。
    let renderTexture = new cc.RenderTexture();
    //@ts-ignore
    let gl = cc.game._renderContext;
    // 如果截图内容中不包含 Mask 组件,可以不用传递第三个参数
    renderTexture.initWithSize(width, height, gl.STENCIL_INDEX8);
    camera.targetTexture = renderTexture;

    // 渲染一次摄像机,即更新一次内容到 RenderTexture 中
    camera.render(this.target);

    // 这样我们就能从 RenderTexture 中获取到数据了
    let data = renderTexture.readPixels();

    // 接下来就可以对这些数据进行操作了
    let canvas = document.createElement('canvas');
    let ctx = canvas.getContext('2d');
    canvas.width = renderTexture.width;
    canvas.height = renderTexture.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 texture = new cc.Texture2D();
    texture.initWithElement(canvas);

    let spriteFrame = new cc.SpriteFrame();
    spriteFrame.setTexture(texture);


    let node = new cc.Node();
    node.addComponent(cc.Sprite).spriteFrame = spriteFrame
    let s = spriteFrame.getRect()
    node.width = s.width;
    node.height = s.height;
    node.parent = this.node;
    node.x = 0;
    node.y = 300;

}

这种方式 获得截图 图片变小了

设置相机高度

在网上 看到 别人的解决方案
https://xmanyou.com/cocos-creator-2-2-0-jie-tu-chu-xian-yi-chang-hei-se-bei-jing/
你看看 是不是能解决