Ich möchte mehrere Canvases zu einem einzigen Bild zusammenfügen. Also gibt es irgendeine Methode, um mehr als eine Leinwände zu toDataURL
zu verdecken, um ein einzelnes Bild zu machen?mehrere Canvases in dataURL in html5 konvertieren
Antwort
versuchen Sie dieses Beispiel hoffe, dass es helfen wird zu sehen here
//html block
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #c3c3c3;">
</canvas>
<canvas id="myCanvas1" width="200" height="100" style="border:1px solid #c3c3c3;">
Your browser does not support the canvas element.
</canvas>
<canvas id="Canvasimage" width="500" height="100" style="border:1px solid #c3c3c3;">
Your browser does not support the canvas element.
</canvas>
<img id="finalimage" width="500" height="100" style="border:1px solid #c3c3c3;"/>
//script block
function loadImages(sources, callback) {
var images = {};
var loadedImages = 0;
var numImages = 0;
// get num of sources
for (var src in sources) {
numImages++;
}
for (var src in sources) {
images[src] = new Image();
images[src].onload = function() {
if (++loadedImages >= numImages) {
callback(images);
}
};
images[src].src = sources[src];
}
}
window.onload = function (images) {
//Canvas first here
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.fillStyle = "#FF0000";
ctx.fillRect(0, 0, 200, 100);
//Canvas second here
var c1 = document.getElementById("myCanvas1");
var ctx1 = c1.getContext("2d");
ctx1.fillStyle = "#00FF00";
ctx1.fillRect(0, 0, 200, 100);
//Canvas final here.
var canvas = document.getElementById("Canvasimage");
var context = canvas.getContext("2d");
var sources = {
darthVader: c.toDataURL("image/png"),
yoda: c1.toDataURL("image/png")
};
loadImages(sources, function (images) {
context.drawImage(images.darthVader, 100, 30, 200, 137);
context.drawImage(images.yoda, 350, 55, 93, 104);
//finalimage here which has two canvas data
var finalimage = document.getElementById("finalimage");
finalimage.src = canvas.toDataURL("image/png");
});
};
nein. Es gibt eine Leinwand und mehrere Bilder. Ich brauche mehrere Leinwände –
@Rana Muhammad Usman aktualisiert Antwort plz sehen. – Tamkeen
Ja, die drawImage
Methode im Canvas 2D-Renderingkontext akzeptiert Canvas-Elemente als Bildelemente. Also alles, was Sie tun müssen, ist:
- Erstellen Sie eine neue Leinwand
- Holen seinen Kontext
- Zeichnen Sie alle anderen Leinwänden, um es mit
drawImage
- Extrahieren Sie das endgültige Bild von dieser neuen Leinwand
Erstellen Sie eine Funktion, die mehrere Argumente (Canvas-Elemente) annimmt, sie auf eine leere Fläche legt und dann die Daten für die neu erstellte Leinwand zurückgibt.
var getImadeData = function() {
var i = arguments.length,
tempCanvas = document.createElement("canvas"),
ctx = tempCanvas.getContext("2d");
while (i--) {
ctx.drawImage(arguments[i], 0, 0);
};
return tempCanvas.toDataURL();
};
Jetzt füttern Sie einfach die Funktion mehrere Canvas-Elemente, die Sie in eine Datenrolle wie so legen möchten.
In diesem Beispiel wird die letzte Leinwand zuerst auf der leeren Leinwand platziert, also stellen Sie sicher, dass Sie Ihre Leinwandelemente entsprechend bestellen.
Bitte geben Sie einige Erklärungen zusammen mit dem Code. Auf diese Weise werden künftige Besucher wissen, was sie suchen, und Sie könnten mehr Upvotes für Ihre Beiträge erhalten. –
Ich habe einige Erklärungen hinzugefügt, aber es fühlt sich ehrlich gesagt ein bisschen überflüssig. Gab es etwas Besonderes, von dem Sie mehr Details benötigten? – r11
- 1. HTML5/Javascript - DataURL zu Blob & Blob zu DataURL
- 2. Remote-Image DataURL, clientseitige
- 3. Mehrere Datei-Uploader in HTML5 - Browser-Unterstützung?
- 4. Mehrere HTML5-Videos synchronisieren
- 5. Konvertieren von Daten-URI in Bilddaten
- 6. HTML5 EventSource sendet mehrere Anfragen
- 7. Wie lade ich ein Bild von dataurl in android imageview?
- 8. HTML5 Leinwand, konvertieren Leinwand in PDF mit jspdf.js
- 9. von einem DataURL Konvertieren in ein Bild in C# und schreiben Sie eine Datei mit der Bytes
- 10. Konvertieren einzelner Werte in mehrere Zeilen
- 11. SQL: Konvertieren Sie mehrere Spalten in Zeilen
- 12. konvertieren mehrere Arrays in einzelnen Array
- 13. Mehrere DataFrames in ein Panel konvertieren
- 14. Wie groß ist das Base64 DataURL-Bild?
- 15. DataURL über AJAX zu Segeln Endpunkt
- 16. Konvertieren einzelner Spalten mehrere Zeilenwerte in mehrere Spalten Einzelwerte
- 17. "Konvertieren" XHTML 1.0 Strict zu HTML5
- 18. JQGrid DataUrl Verwendung mit ASP.net (MVC 2.0)
- 19. Ist es möglich, mehrere Datenattribute {Name} in HTML5 zu haben?
- 20. Split Polygon in mehrere Polygone basierend auf Raster (html5 Leinwand)
- 21. Konvertieren Sie mehrere Arrays in XML in CakePHP
- 22. Konvertieren von Daten in einer Spalte in mehrere Spalten
- 23. 'Simulieren' Dateidownload in HTML5-Webanwendung
- 24. Javascript HTML5 <audio> mehrere Quelle
- 25. Codeigniter & HTML5 - mehrere Bilder auf einmal
- 26. Spring MVC mehrere Datei-Upload mit HTML5 mehrere Dateiform-Funktion
- 27. HTML5 Canvas fallen Konfetti/Schnee Mehrere Objekte
- 28. Bild-Farbüberlagerung in HTML5/JS
- 29. Mehrere Dateien mit pdf2htmEX konvertieren
- 30. Implementieren von Ebenen in HTML5-Canvas
Sie können alle Zeichnungen von Canvases in einen größeren temporären Canvas kopieren und dann 'toDataURL()' des späteren aufrufen. – Ammar
thnx @Ammar können Sie mir die Referenz plz zur Verfügung stellen –
@Muhammad Usmar: Beantwortet von "bennedich" unten ist der gleiche Ansatz, über den ich sprach. Verwenden Sie die 'drawImage()' -Funktion des Canvas. Für weitere Schwierigkeiten lassen Sie uns wissen. – Ammar