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
Wie wir alle wissen, können wir in Linux ohne den...
Die Installation und Bereitstellung eines private...
Was ist Keepalive? Bei der normalen Entwicklung m...
Die Umgebung dieses Artikels ist Windows 10 und d...
Das Problem mit dem verstümmelten Code ist folgen...
Heute habe ich auf CSDN einen kleinen Trick zum Es...
1. Bestätigen Sie, ob MySQL installiert wurde. Si...
1. Erklärung zur Datendesensibilisierung Bei den ...
Installieren Sie Nginx Ziehen Sie zuerst das Cent...
Als ich kürzlich das Intranet-Portal änderte, sti...
1. Stellen Sie sicher, dass die Netzwerkverbindun...
Szenario 1: So erzielen Sie einen halbtransparent...
Nachdem die Tabellenbreite auf der Seite auf width...
Wenn wir in CentOS7 MySQL installieren, wird Mari...
In diesem Artikelbeispiel wird der spezifische Co...