Hướng dẫn html-to-image github - html-to-image github
Tạo ra một hình ảnh từ một nút DOM bằng cách sử dụng Canvas và SVG HTML5. Fork từ Dom-to-Image với mã có thể duy trì hơn và một số tính năng mới.
Cài đặtnpm install --save html-to-image Cách sử dụng/* 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'); Tất cả các chức năng cấp cao nhất đều chấp nhận các tùy chọn Node và kết xuất DOM và trả về lời hứa được thực hiện với DataURL tương ứng:
Đi với các ví dụ sau. TOPNGtosvg 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); }); tojpeg htmlToImage.toPng(document.getElementById('my-node')) .then(function (dataUrl) { download(dataUrl, 'my-node.png'); }); tosvgtojpeg function filter (node) { return (node.tagName !== 'i'); } htmlToImage.toSvg(document.getElementById('my-node'), { filter: filter }) .then(function (dataUrl) { /* do something */ }); tojpegToblob 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(); }); ToblobTocanvas 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'); } }); TocanvasTopixeldata htmlToImage.toCanvas(document.getElementById('my-node')) .then(function (canvas) { document.body.appendChild(canvas); }); TopixeldataĐi với các ví dụ sau. 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); } } }); Nhận URL dữ liệu được mã hóa hình ảnh PNG Base64 và hiển thị nó ngay lập tức:import React, { useCallback, useRef } from 'react'; import { toPng } from 'html-to-image'; const App: React.FC = () => { const ref = useRef<HTMLDivElement>(null) const onButtonClick = useCallback(() => { if (ref.current === null) { return } toPng(ref.current, { cacheBust: true, }) .then((dataUrl) => { const link = document.createElement('a') link.download = 'my-image-name.png' link.href = dataUrl link.click() }) .catch((err) => { console.log(err) }) }, [ref]) return ( <> <div ref={ref}> {/* DOM nodes you want to convert to PNG */} </div> <button onClick={onButtonClick}>Click me</button> </> ) } Nhận URL dữ liệu được mã hóa hình ảnh PNG Base64 và tải xuống (bằng cách sử dụng tải xuống):Nhận URL dữ liệu SVG, nhưng lọc ra tất cả các yếu 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:/* 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 Lưu và tải xuống hình ảnh JPEG nén: Nhận Blob hình ảnh PNG và tải xuống (sử dụng FileSaver): /* 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 Nhận một htmlcanvaselement và hiển thị nó ngay lập tứ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');2 Nhận 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: Phản ứngTùy chọn lọcMột chức năng lấy nút dom làm đối số. Nên trả về true nếu nút được truyền nên được bao gồm trong đầu ra. Không bao gồm nút có nghĩa là loại trừ trẻ em là tốt. Bạn có thể thêm bộ lọc vào mọi chức năng hình ảnh. Ví dụ,hoặc Không được gọi trên nút gốc.màu nền 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 cao Chiều rộng và chiều cao tính bằng các pixel được áp dụng cho nút trước khi kết xuất. Canvaswidth, CanvasheightCho phép mở rộng kích thước của Canva bao gồm các phần tử bên trong với một chiều rộng và chiều cao nhất định (tính bằng pixel). Phong cách Một đối tượng có thuộc tính được sao chép theo kiểu của nút trước khi kết xuất. Bạn có thể muốn kiểm tra tham chiếu này cho tên JavaScript của các thuộc tính CSS.phẩm chất Phong cách Một đối tượng có thuộc tính được sao chép theo kiểu của nút trước khi kết xuất. Bạn có thể muốn kiểm tra tham chiếu này cho tên JavaScript của các thuộc tính CSS.phẩm chất Mộ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 chỉ ra chất lượ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');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 hình ả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 (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); });1)bộ đệm Được đặ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 để bậ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 /* 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 Bao gồm các điều khoản Đặt sai để sử dụng tất cả URL làm khóa bộ đệm. Nếu giá trị có giá trị giả, nó sẽ loại trừ các thông số truy vấn khỏi URL được cung cấp.ImagePlaceholder /* 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 URL dữ liệu cho hình ảnh trì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 khu vực trống cho hình ảnh thất bại. Phong cách Một đối tượng có thuộc tính được sao chép theo kiểu của nút trước khi kết xuất. Bạn có thể muốn kiểm tra tham chiếu này cho tên JavaScript của các thuộc tính CSS.phẩm chất Mộ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 chỉ ra chất lượ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');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 hình ả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 (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); });1)bộ đệm
Bao gồm các điều khoản Đặt sai để sử dụng tất cả URL làm khóa bộ đệm. Nếu giá trị có giá trị giả, nó sẽ loại trừ các thông số truy vấn khỏi URL được cung cấp. ImagePlaceholder URL dữ liệu cho hình ảnh trì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 khu vực trống cho hình ảnh thất bại. 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:
Những điều cần chú ý
Đóng gópXin vui lòng cho chúng tôi biết làm thế nào chúng tôi có thể giúp đỡ. Kiểm tra các vấn đề cho báo cáo lỗi hoặc đề xuất trước. Để trở thành người đóng góp, xin vui lòng làm theo hướng dẫn đóng góp của chúng tôi. Giấy phépCác kịch bản và tài liệu trong dự án này được phát hành theo giấy phép MIT |