Jak ustawić źródło obrazu w base64


96

Chcę ustawić źródło obrazu na źródło base64, ale to nie działa:

JSfiddle.net/NT9KB

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

JavaScript

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

9
Działa, jeśli usuniesz podziały wierszy w łańcuchu base64. Zaktualizowano Fiddle.
Adriano Repetti

Odpowiedzi:


140

setAttributeZamiast tego spróbuj użyć :

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

Prawdziwa odpowiedź: (I upewnij się, że usunąłeś podziały wierszy w base64.)


thx, zaakceptuję za 10 minut, dlaczego setAttribute jest lepszy?
poppel

@poppel Nie sądzę, żeby to miało znaczenie, ale moją pierwszą próbą naprawienia twoich skrzypiec było użycie setAttribute. Dopiero po tym niepowodzeniu zauważyłem przerwy w linii w kodowaniu base64. (Ponieważ spieszyłem się, aby otrzymać odpowiedź, nie próbowałem tego src=po naprawieniu przerw.)
Kevin Boucher

26

Jeśli wolisz użyć jQuery do ustawienia obrazu z Base64:

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

5
@TruthSerum nie używamy go, ponieważ przełączamy się na stos React. Ale dla zabawy, czy masz dowody statystyczne, aby udowodnić swoje twierdzenie? Czy naprawdę myślisz, że nie ma starszych aplikacji internetowych korzystających z jQuery? Twój komentarz jest oparty na twojej osobistej opinii i naprawdę jest stratą mojego osobistego czasu. Również jeśli sprawdzisz projekt, nadal jest utrzymywany i ma ogromną bazę obserwujących. github.com/jquery/jquery/commits/master
Faris Zacina

5
Również @TruthSerum tutaj jest kilka statystyk, ponieważ nie miałeś szansy ich sprawdzić przed opublikowaniem komentarza: google.com/trends/ ...
Faris Zacina

Obecnie proppowinien być używany zamiast attraktualizowania DOM. attrodnosi się do oryginalnego stanu strony podczas ładowania.
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==">"

4

Twoim problemem jest CR (powrót karetki)

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

możesz użyć:

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

Jakie jest tutaj rozwiązanie?
AHH

Rozwiązaniem jest tutaj usunięcie podziałów wierszy (powrotu karetki) z bazy 64.
Kevin Boucher
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.