Wie kann ich die Bildquelle mit base64 einstellen?


91

Ich möchte die Image-Quelle auf eine Base64-Quelle setzen, aber es funktioniert nicht:

JSfiddle.net/NT9KB

<img id="img" src="" />

das JavaScript

document.getElementById("img").src = "data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg=="

9
Dies funktioniert, wenn Sie Zeilenumbrüche in der base64-Zeichenfolge entfernen. Geige aktualisiert.
Adriano Repetti

Antworten:


134

Versuchen Sie setAttributestattdessen:

document.getElementById('img')
    .setAttribute(
        'src', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=='
    );

Echte Antwort: (Und stellen Sie sicher, dass Sie die Zeilenumbrüche in der base64 entfernen.)


Danke, ich werde in 10 Minuten akzeptieren, warum ist setAttribute besser?
Poppel

@poppel Ich denke nicht, dass es wichtig ist, aber mein erster Versuch, deine Geige zu reparieren, war die Verwendung setAttribute. Nachdem dies fehlgeschlagen war, bemerkte ich die Zeilenumbrüche in der base64-Codierung. (Da ich mich beeilte, eine Antwort zu erhalten, habe ich es nicht versucht, src=nachdem ich die Zeilenumbrüche
Kevin Boucher

26

Falls Sie jQuery bevorzugen, um das Image von Base64 festzulegen:

$("#img").attr('src', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==');

5
@TruthSerum verwenden wir nicht, da wir zu einem React-Stack wechseln. Aber haben Sie zum Spaß statistische Beweise, um Ihre Behauptung zu beweisen? Denken Sie wirklich, dass es keine älteren Web-Apps gibt, die jQuery verwenden? Ihr Kommentar basiert auf Ihrer persönlichen Meinung und ist wirklich eine Verschwendung meiner persönlichen Zeit. Auch wenn Sie das Projekt überprüfen, wird es weiterhin gepflegt und hat eine riesige Follower-Basis. github.com/jquery/jquery/commits/master
Faris Zacina

5
Auch @TruthSerum hier sind einige Statistiken, da Sie keine Gelegenheit hatten, sie zu überprüfen, bevor Sie Ihren Kommentar veröffentlichen: google.com/trends/…
Faris Zacina

Heutzutage propsollte anstelle der attrAktualisierung des DOM verwendet werden. attrbezieht sich auf den ursprünglichen Seitenstatus beim Laden.
AntonChanning

6
img = new Image();
img.src = "data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="
img.outerHTML;
"<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==">"

3

Ihr Problem sind die cr (Wagenrücklauf)

http://jsfiddle.net/NT9KB/210/

Sie können verwenden:

document.getElementById("img").src = "data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="

Was ist die Lösung genau hier?
AHH

Die Lösung hier besteht darin, die Zeilenumbrüche (Wagenrückläufe) von der Basis 64 zu entfernen.
Kevin Boucher
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.