javascript實現網頁截圖操作介紹
在當前javascript還不能夠實現網頁截圖操作,如果將來可以實現,那麼也是瀏覽器提供了對應的介面。
當前我們的實現方式是通過拿到畫素點的資訊來”拼湊”圖片。
常見的截圖方式:
phantomJS它提供了一個截圖函式,通過它可以整屏獲取頁面截圖,而且他支援的格式也比較多:JPG/PNG/GIF/PDF。通過簡單的兩句命令就可以把一個網頁擷取下來:
[JavaScript] 純文字檢視 複製程式碼// render.js var webPage = require('webpage'); var page = webPage.create(); page.viewportSize = { width: 1920, height: 1080 }; page.open("http://www.taobao.com", function start(status) { page.render('taobao_home.jpeg', {format: 'jpeg', quality: '100'}); phantom.exit(); });
安裝 phantomjs 之後執行下上面的檔案:
[JavaScript] 純文字檢視 複製程式碼phantomjs render.js
一張寬度很窄的淘寶首頁圖就儲存到了同目錄下的 taobao_home.jpeg 中。也有使用phantomjs做了很多有意思的東西,比如每隔 100ms 截圖,然後對比影像之間的差異,分析網頁的載入情況和效能問題,甚至做網頁的監控。好吧,話題收回來,繼續說說其他的截圖方式。
前端截圖方案:
能夠匯出圖片的,目前只有 canvas。頁面上的元素,除了圖片、視音訊、SVG等,其他都是文字,都可以使用 css 樣式變換出來。我們知道,在 canvas 中是可以繪製圖片和文字的,那麼問題就很好解決了。
(1).遍歷頁面的所有元素,提取DOM數。
(2).獲取渲染之後的每個 DOM 節點的內聯、外鏈 CSS 屬性
(3).將樣式轉換成 canvas 的屬性,利用 offset 等屬性輔助擺放位置,將節點對應到 canvas 上。
這個方案比較粗糙,但是對於簡單的頁面,以上操作就能匯出一張幾乎與原狀一模一樣的圖片。當然,我們想到的,也有人實現出來了,html2canvas 就是一個關注度很高的 js 截圖庫,它考慮的內容會更多更全面。下面是簡單的實現程式碼片段:
[JavaScript] 純文字檢視 複製程式碼html2canvas(document.body).then(function (canvas) { canvas.id = 'screenshotCanvas'; document.body.appendChild(canvas); });
此時,頁面的截圖已經 append 到了 body 中。canvas 提供了匯出圖片的函式:
[JavaScript] 純文字檢視 複製程式碼var can = documeng.getElementById("screenshotCanvas"); var imgDataURI = can.toDataURL('image/png');
相關文章
- javascript實現網頁截圖匯出方案JavaScript網頁
- Python網頁截圖/螢幕截圖/截長圖如何實現?Python網頁
- PHP如何實現網頁截圖?PHP網頁
- golang快速實現服務端網頁截圖Golang服務端網頁
- 如何在Mac網頁中長截圖?蘋果電腦網頁截圖怎麼截長圖?Mac網頁蘋果
- html2canvas-實現頁面截圖HTMLCanvas
- Python+Selenium+phantomjs實現網頁模擬登入和截圖PythonJS網頁
- 使用chromedriver抓取網頁截圖Chrome網頁
- 網頁截圖工具:WebShot for Mac網頁WebMac
- 小米Play如何截圖截圖?小米Play手機多種螢幕截圖方法介紹
- 免費的網頁截圖API網頁API
- 怎麼生成完整的網頁截圖? Full Page Screen Capture 幫你實現網頁APT
- js實現視訊截圖,視訊批量截圖,canvas實現JSCanvas
- chrome-網頁gif截圖外掛Chrome網頁
- 網頁完整的長截圖怎麼截?3步搞定!網頁
- canvas實現截圖功能Canvas
- phantomjs實現免費線上網頁截圖工具-toolfk程式設計師線上工具網JS網頁程式設計師
- OutputStreamWriter介紹&程式碼實現和InputStreamReader介紹&程式碼實現
- MyBatis框架介紹及實戰操作MyBatis框架
- Excel操作-NPOI截圖Excel
- Selenium IDE 如何實現截圖IDE
- 原生JS實現影片截圖JS
- C#實現截圖功能C#
- selenium實現螢幕截圖
- Android長截圖的實現Android
- 網頁抓取的重要性介紹網頁
- 介紹一款可懸浮的截圖軟體
- JavaScript setTimeout() 介紹JavaScript
- Mybatis 分頁:Pagehelper + 攔截器實現MyBatis
- 網站實現HTTPS的詳細流程介紹網站HTTP
- [譯]用javascript實現一門程式語言-AST的介紹JavaScriptAST
- 《FireShot》一鍵滾動截圖整個網頁網頁
- 微信長按網頁儲存為截圖網頁
- 網頁佈局------輪播圖效果實現網頁
- 前端黑科技:使用 JavaScript 實現網頁掃碼功能前端JavaScript網頁
- python 三種方式實現截圖Python
- JavaScript 語法介紹JavaScript
- JavaScript常用物件介紹JavaScript物件
- JavaScript 輸出介紹JavaScript