截图有大黑边,求助

  • Creator 版本:2.3.1

  • 目标平台: Android / 模拟器

  • 详细报错信息,包含调用堆栈:无报错

  • 重现方式:截图毕出现

  • 之前哪个版本是正常的 :

  • 手机型号 :

  • 手机浏览器 :

  • 编辑器操作系统 :

  • 编辑器之前是否有其它报错 :

  • 出现概率:100%

  • 额外线索:我传入的target就是一个sprite节点,节点下什么都没有
    截图代码
    public static Screenshots (target: cc.Node) {
    var width = Math.floor(target.width);
    var height = Math.floor(target.height);
    if (CC_JSB) {
    var fileName = “screenshots.jpg”;
    var fullPath = jsb.fileUtils.getWritablePath()+“TEST/”+ fileName;
    // if (cc.sys.os == cc.sys.OS_ANDROID) fullPath = ‘/sdcard/qrcode.jpg’;
    if (jsb.fileUtils.isFileExist(fullPath)) {
    jsb.fileUtils.removeFile(fullPath);
    }
    var cameraNode = new cc.Node();
    cameraNode.parent = target;
    // cameraNode.zIndex = -1;
    var camera = cameraNode.addComponent(cc.Camera);
    camera.cullingMask = 0xffffffff;
    var texture = new cc.RenderTexture();
    texture.initWithSize(width, height);
    camera.targetTexture = texture;
    camera.render(null);
    var data = texture.readPixels();
    target.removeChild(cameraNode);
    //以下代码将截图后默认倒置的图片回正
    var picData = new Uint8Array(width * height * 4);
    var rowBytes = width * 4;
    for (var row = 0; row < height; row++) {
    var srow = height - 1 - row;
    var start = Math.floor(srow * width * 4);
    var reStart = row * width * 4;
    // save the piexls data
    for (var i = 0; i < rowBytes; i++) {
    picData[reStart + i] = data[start + i];
    }
    }
    //保存图片
    (jsb).saveImageData(picData, width, height, fullPath);
    console.log("截图路径: ",fullPath)
    }
    }

有这样一个警告libpng warning: iCCP: known incorrect sRGB profile

今天又遇到这个问题,回答以便下次又搞忘可以找到解决办法
1.图片尺寸
camera.alignWithScreen = false;
camera.orthoSize = 300;//宽高较长边的长度
2.黑边问题
_canvas.toDataURL(‘image/png’);//用png就会有透明边,不会是黑色的

1赞