Derzeit gibt es viele Betriebsaktivitäten für öffentliche WeChat-Konten, und es besteht die Notwendigkeit, Bilder zu generieren. Nachdem die Bilder generiert wurden, können sie an Freunde gesendet und im Freundeskreis verbreitet werden, was der Produktwerbung förderlich ist! 1.Sie können Canvas zum Generieren von Bildern verwenden, da es aber bereits eine Open-Source-Bibliothek namens html2canvas gibt, habe ich sie aus Zeitgründen nicht selbst geschrieben. GitHub-Adresse: html2canvas LiveDemo /** * Ermitteln Sie das Pixelverhältnis gemäß window.devicePixelRatio*/ Funktion DPR() { wenn (window.devicePixelRatio && window.devicePixelRatio > 1) { gibt window.devicePixelRatio zurück; } Rückgabe 1; } /** * Konvertieren Sie den übergebenen Wert in eine Ganzzahl */ Funktion parseValue(Wert) { gibt parseInt(Wert, 10) zurück; }; /** * Leinwand zeichnen */ asynchrone Funktion drawCanvas (Selektor) { // Holen Sie sich den DOM-Knoten, den Sie konvertieren möchten const dom = document.querySelector(selector); const box = window.getComputedStyle(dom); // Berechnete Breite und Höhe des DOM-Knotens const width = parseValue(box.width); const Höhe = parseValue(Box.Höhe); // Pixelverhältnis abrufen const scaleBy = DPR(); // Ein benutzerdefiniertes Canvas-Element erstellen var canvas = document.createElement('canvas'); //Setzen Sie die Canvas-Elementattribute Breite und Höhe auf das Verhältnis Breite und Höhe des DOM-Knotens * Pixel canvas.width = Breite * scaleBy; canvas.height = Höhe * Skalierung nach; // Canvas-CSS-Breite und -Höhe auf DOM-Knotenbreite und -Höhe einstellen canvas.style.width = `${width}px`; Leinwand.Stil.Höhe = `${height}px`; // Pinsel abrufen const context = canvas.getContext('2d'); // Alle gezeichneten Inhalte nach Pixelverhältnis skalieren context.scale(scaleBy, scaleBy); sei x = Breite; sei y = Höhe; returniere und warte auf html2canvas(dom, {canvas}).dann(function () { ConvertCanvasToImage(Leinwand, x, y) }) } /** * Konvertieren Sie das Bild in das Base64-Format*/ Funktion convertCanvasToImage(canvas, x, y) { let image = neues Bild(); let _container = document.getElementsByClassName('container')[0]; let _body = document.getElementsByTagName('body')[0]; Bildbreite = x; Bildhöhe = y; image.src = canvas.toDataURL("bild/png"); _body.removeChild(_container); Dokument.Body.AppendChild(Bild); Bild zurückgeben; } zeichneCanvas('.container') 2.Da aktuelle Mobiltelefone alle über hochauflösende Bildschirme verfügen, erscheinen die Bilder unscharf, wenn Sie sie nicht verarbeiten. Warum erscheinen sie unscharf? Dabei geht es um das Gerätepixelverhältnis devicePixelRatio js stellt window.devicePixelRatio zur Verfügung, um das Gerätepixelverhältnis abzurufen Funktion DPR() { wenn (window.devicePixelRatio && window.devicePixelRatio > 1) { gibt window.devicePixelRatio zurück; } Rückgabe 1; } Mit dieser DPR-Funktion wird das Pixelverhältnis des Geräts ermittelt. Was ist nach dem Ermitteln des Pixelverhältnisses zu tun? var Leinwand = Dokument.createElement('Leinwand'); //Setzen Sie die Canvas-Elementattribute Breite und Höhe auf das Verhältnis Breite und Höhe des DOM-Knotens * Pixel canvas.width = Breite * scaleBy; canvas.height = Höhe * Skalierung nach; // Canvas-CSS-Breite und -Höhe auf DOM-Knotenbreite und -Höhe einstellen canvas.style.width = `${width}px`; Leinwand.Stil.Höhe = `${height}px`; // Pinsel abrufen const context = canvas.getContext('2d'); // Alle gezeichneten Inhalte nach Pixelverhältnis skalieren context.scale(scaleBy, scaleBy); 3.Nachdem Sie das Gerätepixelverhältnis ermittelt haben, multiplizieren Sie canavs.width und canvas.height mit dem Gerätepixelverhältnis, das scaleBy lautet. Stellen Sie zu diesem Zeitpunkt canvas.style.width und canvas.style.height auf die Breite und Höhe des Doms ein. Überlegen Sie, warum Sie es so schreiben? Schließlich vergrößern Sie beim Zeichnen das Pixelverhältnis des gezeichneten Inhalts um das Vielfache Beispielsweise beträgt die Gerätebreite und -höhe des iPhone 6S 375 x 667 und das window.devicePixelRatio des 6S = physikalische Pixel/Dips (2=750/375). Sind die Designs, die Designer Ihnen normalerweise geben, also 750 x 1334? Wenn Sie es also auf einem hochauflösenden Bildschirm im Verhältnis 1:1 zeichnen, wird es verschwommen sein. Sehen Sie sich das Bild selbst an. 6S DPR=2 6 plus DPR = 3 4.Rufen Sie abschließend canvas.toDataURL("image/png") auf und weisen Sie es image.src zu. Da WeChat keine Bilder speichern kann, können wir nur Bilddateien generieren und die integrierte Funktion „Langdruck“ von WeChat aufrufen, um Bilder im Album zu speichern. Dies ist das Ende dieses Artikels über die Lösung zum Generieren von Bildern mit JavaScript auf mobilen H5. Weitere relevante Inhalte zum Generieren von Bildern mit JavaScript auf mobilen H5 finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die verwandten Artikel weiter unten. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Detaillierte Schritte zum Konfigurieren von my.ini für mysql5.7 und höher
>>: So erhalten Sie die aktuelle Zeit mit der Funktion time(NULL) und localtime() in Linux
Dieser Artikel beschreibt die Linux-Benutzer- und...
Inhaltsverzeichnis 1. Schlüsselwörter 2. Dekonstr...
In diesem Artikel wird der spezifische Code für d...
Das Prinzip besteht darin, die Methode window.pri...
Dropdown-Menüs sind auch im wirklichen Leben weit...
Heute habe ich Docker verwendet, um das Image abz...
LocalStorage speichert Boolesche Werte Als ich he...
Dieser Artikel fasst gängige Betriebstechniken fü...
In diesem Artikel werden 3 Methoden beschrieben, ...
Vorwort Ich dachte immer, dass UTF-8 eine univers...
1. Formular <form id="" name="&...
1. Zurück-Button Verwenden Sie history.back(), um...
Navigation, kleine Datenmenge Tabelle, zentriert &...
In MySQL können Sie mehrere Indizes für eine Tabe...
Die von mir verwendete Datenbank ist MySQL Datenb...