2013-05-08 9 views
62

ich die Bildquelle auf eine base64 Quelle gesetzt werden soll, aber es funktioniert nicht:Wie kann ich Bildquelle eingestellt mit base64

JSfiddle.net/NT9KB

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

die JavaScript

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

Es funktioniert, wenn Sie Zeilenumbrüche in der Base64-Zeichenfolge entfernen. Geige aktualisiert. –

Antwort

87

Try unter Verwendung setAttribute stattdessen:

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

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

+0

thx, ich werde in 10 Minuten akzeptieren, warum setAttribute besser ist? – poppel

+0

@poppel Ich glaube nicht, dass es wichtig ist, aber mein erster Versuch, deine Geige zu reparieren, war 'setAttribute'. Es war danach gescheitert, dass ich die Zeilenumbrüche in der Base64-Codierung bemerkte. (Da ich mich beeilte, eine Antwort zu erhalten, habe ich es nach dem Reparieren der Zeilenumbrüche nicht mit 'src =' versucht.) –

+0

Sie sollten '' 'vor' data: ... 'hinzufügen, damit es funktioniert. – Vadim

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

Falls Sie lieber jQuery verwenden, um das Bild von Base64 zu setzen:

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

@TruthSerum wir verwenden es nicht, da wir zu einem React Stack wechseln. Aber haben Sie zum Spaß statistische Beweise, um Ihre Behauptung zu beweisen? Glaubst du wirklich, dass es keine Legacy-Web-Apps gibt, die jQuery verwenden? Ihr Kommentar basiert auf Ihrer persönlichen Meinung und wirklich eine Verschwendung meiner persönlichen Zeit. Auch wenn Sie das Projekt überprüfen, ist es immer noch gepflegt und hat eine große Follower-Basis. https://github.com/jquery/jquery/commits/master –

+5

Auch @TruthSerum hier sind einige Statistiken, da Sie keine Chance hatten, sie zu überprüfen, bevor Sie Ihren Kommentar veröffentlichen: https://www.google. com/trends/erkunden # q = jquery% 2C% 20angular & cmpt = q & tz = Etc% 2FGMT-2 –

1

Ihr Problem sind die CR (Carriage Return)

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

können Sie verwenden:

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

Was ist die Lösung genau hier? – AHH

+0

Die Lösung hier ist, die Zeilenumbrüche (Wagenrücklauf) von der Basis 64 zu entfernen. –

Verwandte Themen