Bildformat Unterstützung
- html2canvas:
html2canvashingegen rendert den Inhalt eines DOM-Elements in ein Canvas-Element, das dann in ein PNG-Bild umgewandelt werden kann. Es unterstützt jedoch keine direkte JPEG- oder SVG-Ausgabe, was es in Bezug auf die Formatvielfalt weniger flexibel macht. - dom-to-image:
dom-to-imageunterstützt die Konvertierung von DOM-Elementen in mehrere Bildformate, einschließlich PNG, JPEG und SVG. Es ermöglicht Entwicklern, das gewünschte Format auszuwählen und bietet Flexibilität bei der Handhabung von Bildern in verschiedenen Anwendungen.
SVG Unterstützung
- html2canvas:
html2canvaskann SVGs rendern, behandelt sie jedoch als Rastergrafiken, was zu einem Verlust der Vektoreigenschaften führen kann. Dies kann problematisch sein, wenn die Skalierbarkeit und Klarheit der SVG-Grafiken wichtig ist. - dom-to-image:
dom-to-imagebietet native Unterstützung für SVG-Elemente und kann sie genau in Bilder konvertieren. Dies macht es zu einer ausgezeichneten Wahl für Anwendungen, die Vektorgrafiken und deren genaue Darstellung benötigen.
CSS-Stil Unterstützung
- html2canvas:
html2canvashingegen versucht, alle angewendeten CSS-Stile, einschließlich Hintergründe, Schatten und Transformationen, genau zu erfassen. Es bietet eine umfassendere Unterstützung für komplexe Stile, was es zu einer besseren Wahl für die Erfassung von Inhalten mit detaillierten Designs macht. - dom-to-image:
dom-to-imagebehält die meisten CSS-Stile bei, wenn es DOM-Elemente in Bilder konvertiert. Es unterstützt jedoch möglicherweise nicht alle komplexen Stile oder Animationen, insbesondere solche, die mit CSS-Variablen oder -Animationen erstellt wurden.
Benutzerdefinierte Render-Optionen
- html2canvas:
html2canvasbietet ebenfalls einige Anpassungsoptionen, z. B. das Festlegen der Canvas-Größe und das Anpassen der Bildqualität. Es ist jedoch weniger flexibel in Bezug auf das Ausschließen von Elementen oder das Anpassen von Stilen während des Renderns. - dom-to-image:
dom-to-imageermöglicht es Entwicklern, benutzerdefinierte Render-Optionen festzulegen, z. B. das Festlegen von Bildgrößen, das Anpassen von Hintergrundfarben und das Ausschließen bestimmter Elemente aus der Konvertierung. Diese Flexibilität ermöglicht eine bessere Kontrolle über den Renderprozess.
Leistung und Ressourcenverbrauch
- html2canvas:
html2canvaskann jedoch bei der Erfassung großer oder komplexer DOM-Strukturen ressourcenintensiv sein, da es versucht, alle Inhalte, einschließlich Hintergründe und Stile, zu rendern. Dies kann zu längeren Ladezeiten und höherem Speicherverbrauch führen. - dom-to-image:
dom-to-imageist in der Regel ressourcenschonender, da es nur die angegebenen DOM-Elemente rendert und nicht den gesamten Inhalt eines Containers. Dies führt zu schnelleren Konvertierungen und einem geringeren Einfluss auf die Leistung der Anwendung.
Codebeispiel
- html2canvas:
Hier ist ein Beispiel, wie man
html2canvasverwendet, um einen Screenshot eines DOM-Elements zu erstellen:import html2canvas from 'html2canvas'; const element = document.getElementById('my-element'); // Das DOM-Element, das Sie erfassen möchten html2canvas(element) .then((canvas) => { document.body.appendChild(canvas); // Canvas zur Anzeige hinzufügen // Canvas als Bild speichern const link = document.createElement('a'); link.href = canvas.toDataURL('image/png'); link.download = 'screenshot.png'; link.click(); // Automatischer Download }) .catch((error) => { console.error('Fehler beim Erstellen des Screenshots:', error); }); - dom-to-image:
Hier ist ein einfaches Beispiel, wie man
dom-to-imageverwendet, um ein DOM-Element in ein Bild zu konvertieren:import domtoimage from 'dom-to-image'; import { saveAs } from 'file-saver'; // Zum Speichern der Datei const node = document.getElementById('my-node'); // Das DOM-Element, das Sie konvertieren möchten domtoimage.toPng(node) .then((dataUrl) => { const img = new Image(); img.src = dataUrl; document.body.appendChild(img); // Bild zur Anzeige hinzufügen // Bild speichern const link = document.createElement('a'); link.href = dataUrl; link.download = 'my-image.png'; link.click(); // Automatischer Download }) .catch((error) => { console.error('Fehler beim Konvertieren des DOM-Elements:', error); });
