Wie konvertiert ein byte-array in ein Bild?
Javascript zu verwenden, mache ich einen AJAX-Aufruf eines WCF-Diensts, und es ist wieder ein byte-array. Wie kann ich konvertieren, dass zu einem Bild und zeigt Sie auf der web-Seite?
- Ich Frage mich, können Sie ändern Sie die Antwort, geben von den service? Ist es nur reiner bytes nur?
- Auch wenn Sie "konvertieren es in ein Bild" ich bin nicht sicher, wie Sie würde legen Sie es in die DOM. Es müsste referenziert werden, als eine Ressource, irgendwie. Interessante Frage.
- Hinzugefügt eine moderne Antwort, die nicht erfordern keine Konvertierung von/nach base64. Super effizient.
- Die einfachste Antwort ist, es einfach zu tun, wie wir auf alle blobs, die wir anzeigen als Bilder:
<img src="/api/image/123" />
. Wenn der content-type korrekt eingestellt wurde, dass das Bild angezeigt wird. Die ausführlichere Antwort, im Falle einer änderung der server ist nicht eine option, zu tun, was ich Vorschlage, unten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß, dies ist ein Alter thread, aber ich schaffte es durch einen AJAX-Aufruf über einen web-service und dachte, ich würde teilen...
Habe ich ein Bild in meine Seite schon:
AJAX:
Mein 'GetItemPreview' code-Abfragen einer SQL server-wo ich ein gespeichertes Bild als base64-string und gibt das Feld als die "Ergebnisse":
Die Magie ist in der AJAX-Aufruf in dieser Zeile:
Genießen!
src="/api/images/" + image.id
. Ihr browser ist nicht egal, wenn das Bild gespeichert ist Datei oder in einer Datenbank.Anstelle von aufrufen der service mit AJAX, Javascript verwenden, um zu bauen ein Bild-element ein und verweisen Sie auf das service-direkt...
Nur stellen Sie sicher, dass der Dienst setzt den content-type richtig.
Response.BinaryWrite
und setzt content-type "image/jpeg". Das funktionieren würde.Hier ist der JavaScript-Quellcode zu entschlüsseln, PNG -, JPEG-und GIF-Bild-bytes mit den Data-URI-Schema:
Würden Sie wahrscheinlich wollen, erstellen Sie eine data-uri aus Ihren Daten und legen Sie es in das src-Attribut eines img-Elements
http://en.wikipedia.org/wiki/Data_URI_scheme
Schicken Sie es einfach zurück, wie ein
Base64
dann nur:In meinem Fall bin ich mit einem
Hidden
Input
mit einemId
vonSignature
zu speichern, dassBase64
DatenSpät zur party, aber wenn Ihre Antwort aussieht
diese:
Konvertierung der byte-array base64, wenn Sie den binären byte-array ist lächerlich teuer, und noch wichtiger, es ist völlig überflüssige Arbeit, da Sie nicht zu tun haben, konvertieren Sie es auf allen modernen Browsern! Die statische
URL.createObjectURL
Methode erstellt eineDOMString
eine kurze browser-spezifische url, die aus dem byte-array, und Sie können die sich daraus ergebenden kurzen string inimg.src
oder ähnliches.Dies ist unendlich schneller als Lösungen, in denen die Verkettung
TextEncoder
undbtoa
wenn alles, was Sie brauchen, ist, um ein Bild anzuzeigen, die er in einem byte-array form.Dies ist mithilfe von HTML5-APIs, und so nicht auf Knoten oder andere JS-basierten Servern, natürlich.
JS:
HTML:
Mithilfe von jQuery als Beispiel: