91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

html2canvas 生成高清圖片

發布時間:2020-06-30 12:26:59 來源:網絡 閱讀:3640 作者:antlove 欄目:開發技術

html2canvas.js 要改2處代碼

第1處代碼 line 603

window.html2canvas = function(nodeList, options) {
    var index = html2canvasCloneIndex++;
    options = options || {};
    if (options.logging) {
        window.html2canvas.logging = true;
        window.html2canvas.start = Date.now();
    }

    options.async = typeof(options.async) === "undefined" ? true : options.async;
    options.allowTaint = typeof(options.allowTaint) === "undefined" ? false : options.allowTaint;
    options.removeContainer = typeof(options.removeContainer) === "undefined" ? true : options.removeContainer;
    options.javascriptEnabled = typeof(options.javascriptEnabled) === "undefined" ? false : options.javascriptEnabled;
    options.p_w_picpathTimeout = typeof(options.p_w_picpathTimeout) === "undefined" ? 10000 : options.p_w_picpathTimeout;
    options.renderer = typeof(options.renderer) === "function" ? options.renderer : CanvasRenderer;
    options.strict = !!options.strict;

    if (typeof(nodeList) === "string") {
        if (typeof(options.proxy) !== "string") {
            return Promise.reject("Proxy must be used when rendering url");
        }
        var width = options.width != null ? options.width : window.innerWidth;
        var height = options.height != null ? options.height : window.innerHeight;
        return loadUrlDocument(absoluteUrl(nodeList), options.proxy, document, width, height, options).then(function(container) {
            return renderWindow(container.contentWindow.document.documentElement, container, options, width, height);
        });
    }

    var node = ((nodeList === undefined) ? [document.documentElement] : ((nodeList.length) ? nodeList : [nodeList]))[0];
    node.setAttribute(html2canvasNodeAttribute + index, index);
    //return renderDocument(node.ownerDocument, options, node.ownerDocument.defaultView.innerWidth, node.ownerDocument.defaultView.innerHeight, index).then(function(canvas) {
   var width = options.width != null ? options.width : node.ownerDocument.defaultView.innerWidth;
   var height = options.height != null ? options.height : node.ownerDocument.defaultView.innerHeight;
   return renderDocument(node.ownerDocument, options, width, height, index).then(function (canvas) {
      if (typeof(options.onrendered) === "function") {
            log("options.onrendered is deprecated, html2canvas returns a Promise containing the canvas");
            options.onrendered(canvas);
        }
        return canvas;
    });
};

第2處 line 633

function renderWindow(node, container, options, windowWidth, windowHeight) {
    var clonedWindow = container.contentWindow;
    var support = new Support(clonedWindow.document);
    var p_w_picpathLoader = new ImageLoader(options, support);
    var bounds = getBounds(node);
    var width = options.type === "view" ? windowWidth : documentWidth(clonedWindow.document);
    var height = options.type === "view" ? windowHeight : documentHeight(clonedWindow.document);
    var renderer = new options.renderer(width, height, p_w_picpathLoader, options, document);
    var parser = new NodeParser(node, renderer, support, p_w_picpathLoader, options);
    return parser.ready.then(function() {
        log("Finished rendering");
        var canvas;

        if (options.type === "view") {
            canvas = crop(renderer.canvas, {width: renderer.canvas.width, height: renderer.canvas.height, top: 0, left: 0, x: 0, y: 0});
        } else if (node === clonedWindow.document.body || node === clonedWindow.document.documentElement) {// xiaomin modify
            canvas = renderer.canvas;
        } else if(options.scale){// xiaominzh modify
			var scale = options.scale || 1;
			canvas = crop(renderer.canvas, {width: bounds.width * scale, height:bounds.height * scale, top: bounds.top *scale, left: bounds.left *scale, x: 0, y: 0});
		}else {
            canvas = crop(renderer.canvas, {width:  options.width != null ? options.width : bounds.width, height: options.height != null ? options.height : bounds.height, top: bounds.top, left: bounds.left, x: clonedWindow.pageXOffset, y: clonedWindow.pageYOffset});
        }

        cleanupContainer(container, options);
        return canvas;
    });
}


如何使用

var shareContent = $("#share-person-report")[0];   //需要截圖的包裹的DOM 元素
var width = shareContent.offsetWidth; //獲取dom 寬度
var height = shareContent.offsetHeight; //獲取dom 高度
var canvas = document.createElement("canvas"); //創建一個canvas節點
var scale = 2; //定義任意放大倍數 支持小數
canvas.width = width * scale; //定義canvas 寬度 * 縮放
canvas.height = height * scale; //定義canvas高度 *縮放
canvas.getContext("2d").scale(scale,scale); //獲取context,設置scale
html2canvas($('#share-person-report'), {
    allowTaint:true,
    taintTest:false,
    useCORS:true,
    background : '#fff',
    scale:scale,
    width:width,
    height:height,
    canvas:canvas,
    onrendered: function(cav) {
        var src = cav.toDataURL();
        var html = "<img src='"+src+"' class='canvas'/>";
        $('#share-person-report').html(html);
    }
});

附件:http://down.51cto.com/data/2366743
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

右玉县| 来凤县| 淳安县| 博白县| 如皋市| 康平县| 旅游| 兴山县| 乌拉特前旗| 迁西县| 康定县| 上蔡县| 尼勒克县| 武宁县| 盐亭县| 翁牛特旗| 东安县| 天峻县| 波密县| 宜君县| 方正县| 绥滨县| 彰化市| 嘉荫县| 镶黄旗| 特克斯县| 汤原县| 双城市| 永宁县| 琼结县| 连平县| 永春县| 朝阳区| 崇信县| 同江市| 英吉沙县| 武陟县| 都兰县| 仁化县| 杂多县| 洮南市|