Dekodierung einer Leinwand todataURL
Ich habe Schwierigkeiten bei der Verwendung von Daten erstellt, die mit Leinwand todataurl () - Methode. Derzeit mein code sendet die resultierenden Daten an mein php-server nutzt die file_put_contents () - Methode eine Datei zu erstellen, um die Daten zu speichern. Wenn ich jetzt geschnitten und fügen Sie die resultierende Kauderwelsch aus der Datei in ein image-tag src funktioniert es einwandfrei und zeigt so richtig, ich nehme also alles ist peachy.
Aber ich halten Sie in Probleme laufen, wenn ich versuche, den code in JS. Ich habe versucht die php base64_decode-Methode, aber immer currupt-Dateien. Ich fand diesen code:
<?php
$encodedData = str_replace(' ','+',$encodedData);
$decocedData = base64_decode($encodedData);
noch currupted Dateien. Idealerweise würde ich gern ein .png-Datei mit, aber ich würde dich für nur die Verarbeitung der Daten-Datei wieder in JS. Jede Hilfe sehr geschätzt.
DataUriUpload
Komponente der tut all dies automatisch. Es ist dokumentiert hier.InformationsquelleAutor joel | 2011-09-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es scheint, haben Sie, um loszuwerden, der header, vorangestellt, um die Bilddaten durch die
toDataURL()
Funktion.Auf der client-Seite kann man ausziehen, den header so:
Auf der server-Seite verwenden:
hinzufügen müssen, um jpeg zu dem regulären Ausdruck: var output=Daten.replace(/^data:image\/png|jpg|jpeg);base64,/, "");
InformationsquelleAutor stewe
In java-script senden, das Ergebnis aus canvas.toDataURL() auf diesen Browsern, als Unterstützung, diese Methode mit der default-Typ "image/png".
Direkten Weg zum erstellen der png-Datei:
Habe ich diese Arbeit in PHP 5.3 /Windows, für die anderen version, überprüfen Sie bitte.
Bilddaten Probe für die Prüfung auf PHP.
canvas.toDataUrl()... was ist das ?
canvas.toDataUrl()
verwendet wird, zum Beispiel auf fabric.js. Sie können Ihre Leinwand per JavaScriptvar imageInfo = document.getElementById("yourid").toDataURL();
oder via JQueryvar imageInfo = $("#yourid").toDataURL();
Diese Lösung geschrieben von @DanielDeLeón funktioniert wie ein Charme. Danke,Ich denke, das sollte höher sein. Scheint der richtige Weg, es zu tun.
InformationsquelleAutor Daniel De León
Ein weiterer wichtiger Hinweis ist, müssen Sie zum konvertieren von Leerzeichen in Pluszeichen. Wenn Sie das nicht tun, werden die entschlüsselten Daten beschädigt ist:
Lesen Sie mehr auf http://www.php.net/manual/en/function.base64-decode.php
InformationsquelleAutor hiddentstones
Anderen Lösungen haben bei mir nicht funktioniert.
Dies funktioniert:
InformationsquelleAutor lost in binary