Tất cả các chức năng cấp cao nhất đều chấp nhận nút DOM và các tùy chọn kết xuất, đồng thời trả về một lời hứa được thực hiện với dataURL tương ứng Show Đi với các ví dụ sau đếnPngNhận URL dữ liệu được mã hóa base64 của hình ảnh PNG và hiển thị nó ngay lập tức var node = document.getElementById('my-node'); htmlToImage.toPng(node) .then(function (dataUrl) { var img = new Image(); img.src = dataUrl; document.body.appendChild(img); }) .catch(function (error) { console.error('oops, something went wrong!', error); }); Nhận URL dữ liệu được mã hóa base64 của hình ảnh PNG và tải xuống (sử dụng tải xuống) htmlToImage.toPng(document.getElementById('my-node')) .then(function (dataUrl) { download(dataUrl, 'my-node.png'); }); toSvgNhận URL dữ liệu SVG, nhưng lọc ra tất cả các phần tử /* ES6 */ import * as htmlToImage from 'html-to-image'; import { toPng, toJpeg, toBlob, toPixelData, toSvg } from 'html-to-image'; /* ES5 */ var htmlToImage = require('html-to-image');5 function filter (node) { return (node.tagName !== 'i'); } htmlToImage.toSvg(document.getElementById('my-node'), { filter: filter }) .then(function (dataUrl) { /* do something */ }); sang JPGLưu và tải xuống hình ảnh JPEG đã nén htmlToImage.toJpeg(document.getElementById('my-node'), { quality: 0.95 }) .then(function (dataUrl) { var link = document.createElement('a'); link.download = 'my-image-name.jpeg'; link.href = dataUrl; link.click(); }); toBlobNhận một đốm hình ảnh PNG và tải xuống (sử dụng FileSaver) htmlToImage.toBlob(document.getElementById('my-node')) .then(function (blob) { if (window.saveAs) { window.saveAs(blob, 'my-node.png'); } else { FileSaver.saveAs(blob, 'my-node.png'); } }); toCanvasNhận một HTMLCanvasElement và hiển thị nó ngay lập tức htmlToImage.toCanvas(document.getElementById('my-node')) .then(function (canvas) { document.body.appendChild(canvas); }); toPixelDataLấy dữ liệu pixel thô dưới dạng Uint8Array với mỗi 4 phần tử mảng đại diện cho dữ liệu RGBA của pixel var node = document.getElementById('my-node'); htmlToImage.toPixelData(node) .then(function (pixels) { for (var y = 0; y < node.scrollHeight; ++y) { for (var x = 0; x < node.scrollWidth; ++x) { pixelAtXYOffset = (4 * y * node.scrollHeight) + (4 * x); /* pixelAtXY is a Uint8Array[4] containing RGBA values of the pixel at (x, y) in the range 0..255 */ pixelAtXY = pixels.slice(pixelAtXYOffset, pixelAtXYOffset + 4); } } }); Phản ứng________số 8_______ Tùy chọnlọc/* ES6 */ import * as htmlToImage from 'html-to-image'; import { toPng, toJpeg, toBlob, toPixelData, toSvg } from 'html-to-image'; /* ES5 */ var htmlToImage = require('html-to-image');0 Một hàm lấy nút DOM làm đối số. Nên trả về true nếu nút đã qua phải được đưa vào đầu ra. Loại trừ nút có nghĩa là loại trừ cả nút con Bạn có thể thêm bộ lọc vào mọi chức năng hình ảnh. Ví dụ, /* ES6 */ import * as htmlToImage from 'html-to-image'; import { toPng, toJpeg, toBlob, toPixelData, toSvg } from 'html-to-image'; /* ES5 */ var htmlToImage = require('html-to-image');1 hoặc là /* ES6 */ import * as htmlToImage from 'html-to-image'; import { toPng, toJpeg, toBlob, toPixelData, toSvg } from 'html-to-image'; /* ES5 */ var htmlToImage = require('html-to-image');2 Không được gọi trên nút gốc màu nềnMột giá trị chuỗi cho màu nền, bất kỳ giá trị màu CSS hợp lệ nào chiều rộng, chiều caoChiều rộng và chiều cao tính bằng pixel sẽ được áp dụng cho nút trước khi kết xuất canvasWidth, canvasHeightCho phép chia tỷ lệ kích thước của canvas bao gồm các phần tử bên trong theo chiều rộng và chiều cao nhất định (tính bằng pixel) Phong cáchMột đối tượng có các thuộc tính được sao chép sang kiểu của nút trước khi kết xuất. Bạn có thể muốn kiểm tra tài liệu tham khảo này để biết tên JavaScript của các thuộc tính CSS phẩm chấtMột số giữa /* ES6 */ import * as htmlToImage from 'html-to-image'; import { toPng, toJpeg, toBlob, toPixelData, toSvg } from 'html-to-image'; /* ES5 */ var htmlToImage = require('html-to-image');6 và /* ES6 */ import * as htmlToImage from 'html-to-image'; import { toPng, toJpeg, toBlob, toPixelData, toSvg } from 'html-to-image'; /* ES5 */ var htmlToImage = require('html-to-image');7 cho biết chất lượng hình ảnh (e. g. /* ES6 */ import * as htmlToImage from 'html-to-image'; import { toPng, toJpeg, toBlob, toPixelData, toSvg } from 'html-to-image'; /* ES5 */ var htmlToImage = require('html-to-image');8 => /* ES6 */ import * as htmlToImage from 'html-to-image'; import { toPng, toJpeg, toBlob, toPixelData, toSvg } from 'html-to-image'; /* ES5 */ var htmlToImage = require('html-to-image');9) của ảnh JPEG Mặc định là var node = document.getElementById('my-node'); htmlToImage.toPng(node) .then(function (dataUrl) { var img = new Image(); img.src = dataUrl; document.body.appendChild(img); }) .catch(function (error) { console.error('oops, something went wrong!', error); });0 (_______0_______1) cacheBustĐặt thành true để nối thời gian hiện tại dưới dạng chuỗi truy vấn vào các yêu cầu URL nhằm bật tính năng chặn truy xuất bộ đệm Mặc định là var node = document.getElementById('my-node'); htmlToImage.toPng(node) .then(function (dataUrl) { var img = new Image(); img.src = dataUrl; document.body.appendChild(img); }) .catch(function (error) { console.error('oops, something went wrong!', error); });2 bao gồmQueryParamsĐặt false để sử dụng tất cả URL làm khóa bộ đệm. Nếu giá trị có giá trị sai, nó sẽ loại trừ các tham số truy vấn khỏi URL được cung cấp Mặc định là var node = document.getElementById('my-node'); htmlToImage.toPng(node) .then(function (dataUrl) { var img = new Image(); img.src = dataUrl; document.body.appendChild(img); }) .catch(function (error) { console.error('oops, something went wrong!', error); });2 giữ chỗ hình ảnhURL dữ liệu cho hình ảnh giữ chỗ sẽ được sử dụng khi tìm nạp hình ảnh không thành công Mặc định là một chuỗi trống và sẽ hiển thị các vùng trống cho hình ảnh bị lỗi pixelRatioTỷ lệ pixel của hình ảnh được chụp. Mặc định sử dụng tỷ lệ pixel thực tế của thiết bị. Đặt /* ES6 */ import * as htmlToImage from 'html-to-image'; import { toPng, toJpeg, toBlob, toPixelData, toSvg } from 'html-to-image'; /* ES5 */ var htmlToImage = require('html-to-image');7 để sử dụng làm tỷ lệ ban đầu /* ES6 */ import * as htmlToImage from 'html-to-image'; import { toPng, toJpeg, toBlob, toPixelData, toSvg } from 'html-to-image'; /* ES5 */ var htmlToImage = require('html-to-image');7 cho hình ảnh ưa thíchFontFormatĐịnh dạng cần thiết để nhúng phông chữ. Đây là một tối ưu hóa hữu ích khi nhà cung cấp phông chữ web chỉ định một số định dạng khác nhau cho phông chữ trong CSS, chẳng hạn /* ES6 */ import * as htmlToImage from 'html-to-image'; import { toPng, toJpeg, toBlob, toPixelData, toSvg } from 'html-to-image'; /* ES5 */ var htmlToImage = require('html-to-image');3 Thay vì nhúng từng định dạng, tất cả các định dạng khác với định dạng được chỉ định sẽ bị loại bỏ. Nếu tùy chọn này không được chỉ định thì tất cả các định dạng sẽ được tải xuống và nhúng phông chữEmbedCSSKhi được cung cấp, thư viện sẽ bỏ qua quá trình phân tích cú pháp và nhúng URL webfont vào CSS, thay vào đó sử dụng giá trị này. Điều này hữu ích khi được kết hợp với var node = document.getElementById('my-node'); htmlToImage.toPng(node) .then(function (dataUrl) { var img = new Image(); img.src = dataUrl; document.body.appendChild(img); }) .catch(function (error) { console.error('oops, something went wrong!', error); });6 để chỉ thực hiện quy trình nhúng một lần trên nhiều lệnh gọi hàm thư viện /* ES6 */ import * as htmlToImage from 'html-to-image'; import { toPng, toJpeg, toBlob, toPixelData, toSvg } from 'html-to-image'; /* ES5 */ var htmlToImage = require('html-to-image');4 bỏ qua AutoScaleKhi được cung cấp, thư viện sẽ bỏ qua quá trình nhân rộng các dom cực lớn vào đối tượng canvas. Bạn có thể bị mất các phần của hình ảnh nếu được đặt thành var node = document.getElementById('my-node'); htmlToImage.toPng(node) .then(function (dataUrl) { var img = new Image(); img.src = dataUrl; document.body.appendChild(img); }) .catch(function (error) { console.error('oops, something went wrong!', error); });7 và bạn đang xuất một hình ảnh rất lớn Mặc định là var node = document.getElementById('my-node'); htmlToImage.toPng(node) .then(function (dataUrl) { var img = new Image(); img.src = dataUrl; document.body.appendChild(img); }) .catch(function (error) { console.error('oops, something went wrong!', error); });2 loạiMột chuỗi cho biết định dạng hình ảnh. Loại mặc định là image/png; . Khi được cung cấp, hàm toCanvas sẽ trả về một đốm màu khớp với loại và chất lượng hình ảnh đã cho Mặc định là var node = document.getElementById('my-node'); htmlToImage.toPng(node) .then(function (dataUrl) { var img = new Image(); img.src = dataUrl; document.body.appendChild(img); }) .catch(function (error) { console.error('oops, something went wrong!', error); });9 trình duyệtHiện chỉ có lib tiêu chuẩn được sử dụng, nhưng hãy đảm bảo rằng trình duyệt của bạn hỗ trợ
Nó đã được thử nghiệm trên Chrome, Firefox và Safari mới nhất (lần lượt là 49, 45 và 16 tại thời điểm viết bài), trong đó Chrome hoạt động tốt hơn đáng kể trên các cây DOM lớn, có thể là do hỗ trợ SVG hiệu quả hơn và thực tế là nó hỗ trợ thuộc tính htmlToImage.toPng(document.getElementById('my-node')) .then(function (dataUrl) { download(dataUrl, 'my-node.png'); });1 Internet Explorer không (và sẽ không) được hỗ trợ vì nó không hỗ trợ thẻ SVG htmlToImage.toPng(document.getElementById('my-node')) .then(function (dataUrl) { download(dataUrl, 'my-node.png'); });0 Làm thế nào nó hoạt độngCó thể một ngày nào đó tồn tại (hoặc có thể đã tồn tại?) một cách đơn giản và tiêu chuẩn để xuất các phần của HTML thành hình ảnh (và sau đó tập lệnh này chỉ có thể dùng làm bằng chứng cho tất cả các vòng mà tôi đã phải vượt qua để có được như vậy Thư viện này sử dụng một tính năng của SVG cho phép có nội dung HTML tùy ý bên trong thẻ htmlToImage.toPng(document.getElementById('my-node')) .then(function (dataUrl) { download(dataUrl, 'my-node.png'); });0. Vì vậy, để hiển thị nút DOM đó cho bạn, các bước sau được thực hiện |