Ich muss mein Image in eine Base64-Zeichenfolge konvertieren, damit ich mein Image an einen Server senden kann.
Gibt es dafür eine JavaScript-Datei? Sonst, wie kann ich es konvertieren?
javascript
base64
Coder_sLaY
quelle
quelle
Antworten:
Sie können den HTML5
<canvas>
dafür verwenden:Erstellen Sie eine Zeichenfläche, laden Sie Ihr Bild hinein und verwenden Sie dann
toDataURL()
, um die Base64-Darstellung abzurufen (tatsächlich handelt es sich um einedata:
URL, die jedoch das Base64-codierte Bild enthält).quelle
toDataURL
die Kontrolle über die Rückrufe, wiedone/fail/always
dies bei xhr der Fall ist?Es gibt mehrere Ansätze, aus denen Sie auswählen können:
1. Ansatz: FileReader
Laden Sie das Bild als Blob über XMLHttpRequest und konvertieren Sie es mit der FileReader-API in eine dataURL :
Dieses Codebeispiel könnte auch mithilfe der WHATWG- Abruf-API implementiert werden :
Diese Ansätze:
Browser-Unterstützung:
2. Ansatz: Leinwand
Laden Sie das Bild in ein Bildobjekt, malen Sie es auf eine nicht verschmutzte Leinwand und konvertieren Sie die Leinwand zurück in eine dataURL.
Im Detail
Unterstützte Eingabeformate:
image/png
,image/jpeg
,image/jpg
,image/gif
,image/bmp
,image/tiff
,image/x-icon
,image/svg+xml
,image/webp
,image/xxx
Unterstützte Ausgabeformate:
image/png
,image/jpeg
,image/webp
(Chrom)Browser-Unterstützung:
3. Vorgehensweise: Bilder aus dem lokalen Dateisystem
Wenn Sie Bilder aus dem Dateisystem des Benutzers konvertieren möchten, müssen Sie einen anderen Ansatz wählen. Verwenden Sie die FileReader-API :
quelle
Image from origin **** has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://fiddle.jshell.net' is therefore not allowed access.
Dieses Snippet kann Ihre Zeichenfolge, Ihr Bild und sogar Ihre Videodatei in Base64-Zeichenfolgendaten konvertieren.
quelle
Grundsätzlich, wenn Ihr Bild ist
dann kannst du es gerne umwandeln
quelle
<img id='Img1' src='someurl' crossorigin='anonymous'>
Folgendes habe ich getan:
Und so verwenden Sie es
quelle
Ich fand, dass der sicherste und zuverlässigste Weg, dies zu tun, die Verwendung ist
FileReader()
.Demo: Image zu Base64
quelle
Wenn Sie ein Dateiobjekt haben, funktioniert diese einfache Funktion:
Anwendungsbeispiel:
quelle
Sie könnten FileAPI verwenden , aber es wird so gut wie nicht unterstützt.
quelle
Soweit ich weiß, kann ein Bild entweder von FileReader () oder durch Speichern im Canvas-Element in eine Base64-Zeichenfolge konvertiert und dann mit toDataURL () abgerufen werden. Ich hatte ein ähnliches Problem, auf das Sie sich beziehen können.
Konvertieren Sie ein Bild in eine Leinwand, die bereits geladen ist
quelle
Versuchen Sie diesen Code:
Rufen Sie für ein Änderungsereignis zum Hochladen von Dateien diese Funktion auf:
Speichern Sie Base64-Daten in versteckten Dateien, um sie zu verwenden.
quelle
quelle
Wenn Sie Dojo Toolkit verwenden , können wir direkt in Base64 codieren oder decodieren.
Versuche dies:
So codieren Sie ein Array von Bytes mit dojox.encoding.base64:
So dekodieren Sie eine Base64-codierte Zeichenfolge:
quelle