Ich habe einen Code für die Bilderfassung mit Javascript / jquery geschrieben. Unten ist der Code:
function capture_image(){
alert("capture_image");
var p = webcam.capture();
webcam.save();
alert("capture complete "+p); //getting true here
var img = canvas.toDataURL("image");
var item_image = img.replace(/^data:image\/(png|jpg);base64,/, "") ;
alert("item_image"+item_image);
}
Das item_image gibt das base64-Format aus. Wie konvertiere ich dieses base64 in ein Image und wie verwende ich diesen Pfad in der Javascript-Clientseite?
Ich suche Google so viele Websites, aber es funktioniert nicht und dieser Code ist nicht für meine Anforderung geeignet.
javascript
jquery
base64
user2996174
quelle
quelle
Antworten:
Sie können nur eine erstellen
Image
Objekt und legen Sie die base64 alssrc
, einschließlich derdata:image...
Teil wie folgt :Es ist das, was sie "Daten-URIs" nennen, und hier ist die Kompatibilitätstabelle für inneren Frieden.
quelle
data:image...
Teil entfernt hatitem_image
.Dies ist nicht genau das Szenario des OP, sondern eine Antwort auf die einiger Kommentatoren. Es ist eine auf Cordova und Angular 1 basierende Lösung, die an andere Frameworks wie jQuery angepasst werden sollte. Sie erhalten einen Blob aus Base64-Daten, den Sie irgendwo speichern und aus clientseitigem Javascript / HTML referenzieren können.
Es beantwortet auch die ursprüngliche Frage, wie ein Bild (eine Datei) aus den Base 64-Daten abgerufen werden kann:
Der wichtige Teil ist die Base 64 - Binäre Konvertierung:
Das Schneiden ist erforderlich, um Speicherfehler zu vermeiden.
Funktioniert mit JPG- und PDF-Dateien (zumindest habe ich das getestet). Sollte auch mit anderen Mimetypen / Inhaltstypen funktionieren. Überprüfen Sie die Browser und deren Versionen, die Sie anstreben. Sie müssen Uint8Array, Blob und atob unterstützen.
Hier ist der Code zum Schreiben der Datei in den lokalen Speicher des Geräts mit Cordova / Android:
Schreiben der Datei selbst:
Ich verwende die neuesten Versionen von Cordova (6.5.0) und Plugins:
Ich hoffe, das bringt alle hier in die richtige Richtung.
quelle
Müssen dies basierend auf @ Josephs Antwort hinzufügen. Wenn jemand ein Bildobjekt erstellen möchte:
quelle
console.log(image.width);
direkt nach dem Festlegen von src mache, erhalte ich beim ersten Laden in Chrome 0, aber beim anschließenden erneuten Laden der Seite erhalte ich die tatsächliche Breite des Bildes. Es scheint, dass der Browser das Bild zwischenspeichert, aber das erste Laden muss abgehört werden, da die technische Einstellung von src asynchron ist, was bedeutet, dass Sie sich nicht darauf verlassen können, dass Sie unmittelbar nach dem Festlegen von src auf eine base64-Zeichenfolge ein Bild haben. Der Code wird weiterhin in synchroner Reihenfolge mit einem leeren Bild ausgeführt, es sei denn, Sie stellen sicher, dass es ordnungsgemäß geladen ist.quelle
Html
Js
quelle
Ein schneller und einfacher Weg:
quelle