文字,圖片等內容
摘要:所以決定完善這篇文章的內容以下我總結了一些注意事項,在代碼中注釋了,僅供參考。
html2canvas html截圖插件圖片放大清晰度解決方案,支持任意放大倍數,解決原插件圖片偏移問題
Author:youzebin (2016.12.6)
插件下載地址:https://github.com/niklasvh/h...
1.首先引入html2canvas.js html2canvas 0.5.0-beta4 最新版即可
必要步驟1:修改插件的源碼: (修改的地方有兩處)
1. 代碼第 999 行 renderWindow 的方法中 修改判斷條件 增加一個options.scale存在的條件:源碼:
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 || options.canvas != null) { canvas = renderer.canvas; } 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: 0, y: 0}); }
改為:
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) { canvas = renderer.canvas; }else if(options.scale && options.canvas !=null){ log("放大canvas",options.canvas); 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: 0, y: 0}); }2. 代碼第 943 行 html2canvas 的方法中 修改width,height:
源碼:
return renderDocument(node.ownerDocument, options, node.ownerDocument.defaultView.innerWidth, node.ownerDocument.defaultView.innerHeight, 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; });
改為:
width = options.width != null ? options.width : node.ownerDocument.defaultView.innerWidth; 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.使用方式
var shareContent = document.getElementById("shareContent");//需要截圖的包裹的(原生的)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 var opts = { scale:scale, // 添加的scale 參數 canvas:canvas, //自定義 canvas logging: true, //日志開關 width:width, //dom 原始寬度 height:height //dom 原始高度 }; html2canvas(shareContent, opts).then(function (canvas) { //如果想要生成圖片 引入canvas2Image.js 下載地址: //https://github.com/hongru/canvas2image/blob/master/canvas2image.js var img = Canvas2Image.convertToImage(canvas, canvas.width, canvas.height); console.log(img); });2017.1.7 優化插件使用的方式,并附上demo (插件的改動還是按照上面的操作流程)
(不好意思各位,最近發現上面插件的使用方式上存在截圖不完整的bug,
很多人在插件的使用上存在各種各樣的問題。所以決定完善這篇文章的內容)
以下我總結了一些注意事項,在代碼中注釋了,僅供參考。
付:完整使用的demo ,如下:
運行上面的demo 前有以下 注意點:html2Canvas demo
前面的內容沒看過,沒下載過html2canvas.js 沒按照插件改過說明操作的先改好再說
注意元素的樣式的使用:
外層元素width 不能使用百分比 ,避免導致圖片與文字間縮放比例問題
錯誤使用方式如 .container { width:50%; margin: 0 auto; }
需要改成如:
.container { width:300px; margin: 0 auto; }
完整demo下載地址 github: https://github.com/omwteam/ht...
覺得好用就點個贊唄
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/91270.html
摘要:目前已經在運行的線上前端監控系統代碼和講解都放在這篇文章里監控系統介紹及代碼用戶對前端程序員來說,就是一個黑匣子。 摘要: 通過錄屏或者截圖,快速復現BUG場景。 作者:一步一個腳印一個坑 原文:搭建前端監控系統(備選)Js截圖上報篇 Fundebug經授權轉載,版權歸原作者所有。 PS:本文關于Fundebug錄屏功能的內容有些不準確的地方,比如錄屏并非通過截圖實現的,錄屏插件...
摘要:本次技術調研來源于項目中的一個重要功能需求實現微信長按網頁保存為截圖。以下主要解決兩類跨域的圖片資源包括已配置過的中的圖片資源和微信用戶頭像圖片資源。 本次技術調研來源于H5項目中的一個重要功能需求:實現微信長按網頁保存為截圖。 這里有個栗子(請用微信打開,長按圖片即可保存):3分鐘探索你的知識邊界 將整個網頁保存為圖片是一個十分有趣的功能,常見于H5活動頁的結尾頁分享。以下則是項目中...
摘要:本次技術調研來源于項目中的一個重要功能需求實現微信長按網頁保存為截圖。以下主要解決兩類跨域的圖片資源包括已配置過的中的圖片資源和微信用戶頭像圖片資源。 本次技術調研來源于H5項目中的一個重要功能需求:實現微信長按網頁保存為截圖。 這里有個栗子(請用微信打開,長按圖片即可保存):3分鐘探索你的知識邊界 將整個網頁保存為圖片是一個十分有趣的功能,常見于H5活動頁的結尾頁分享。以下則是項目中...
摘要:本次技術調研來源于項目中的一個重要功能需求實現微信長按網頁保存為截圖。以下主要解決兩類跨域的圖片資源包括已配置過的中的圖片資源和微信用戶頭像圖片資源。 本次技術調研來源于H5項目中的一個重要功能需求:實現微信長按網頁保存為截圖。 這里有個栗子(請用微信打開,長按圖片即可保存):3分鐘探索你的知識邊界 將整個網頁保存為圖片是一個十分有趣的功能,常見于H5活動頁的結尾頁分享。以下則是項目中...
閱讀 1901·2021-11-15 11:46
閱讀 1101·2021-10-26 09:49
閱讀 1835·2021-10-14 09:42
閱讀 3393·2021-09-26 09:55
閱讀 844·2019-08-30 13:58
閱讀 1044·2019-08-29 16:40
閱讀 3480·2019-08-26 10:27
閱讀 616·2019-08-23 18:18