2013-05-08 27 views
62

tôi muốn thiết lập các nguồn hình ảnh với một nguồn base64 nhưng nó không hoạt động:Làm thế nào tôi có thể thiết lập nguồn hình ảnh với base64

JSfiddle.net/NT9KB

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

JavaScript

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

Nó hoạt động nếu bạn loại bỏ ngắt dòng trong chuỗi base64. Đã cập nhật Fiddle. –

Trả lời

87

Thử sử dụng setAttribute thay thế:

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

câu trả lời thật: (Và chắc chắn rằng bạn loại bỏ các dòng-chia trong base64.)

+0

thx, tôi sẽ chấp nhận sau 10 phút, tại sao setAttribute lại tốt hơn? – poppel

+0

@poppel Tôi không nghĩ rằng nó quan trọng, nhưng nỗ lực đầu tiên của tôi để sửa chữa fiddle của bạn là sử dụng 'setAttribute'. Đó là sau khi thất bại mà tôi nhận thấy các ngắt dòng trong mã hóa base64. (Vì tôi đã vội vã lấy một câu trả lời được gửi, tôi đã không thử nó với 'src =' sau khi sửa các ngắt dòng.) –

+0

Bạn nên thêm ''' trước 'data: ...' để làm cho nó hoạt động. – 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

Trong trường hợp bạn muốn sử dụng jQuery để thiết lập hình ảnh từ Base64:

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

@TruthSerum chúng tôi không sử dụng nó, vì chúng tôi chuyển sang ngăn xếp React. Nhưng để giải trí, bạn có bằng chứng thống kê để chứng minh yêu cầu của mình không? Bạn có thực sự nghĩ rằng không có ứng dụng web cũ nào sử dụng jQuery? Nhận xét của bạn dựa trên ý kiến ​​cá nhân của bạn và thực sự lãng phí thời gian cá nhân của tôi. Ngoài ra nếu bạn kiểm tra dự án, nó vẫn được duy trì và có một cơ sở người theo dõi rất lớn. https://github.com/jquery/jquery/commits/master –

+5

Ngoài ra @TruthSerum đây là một số thống kê, vì bạn không có cơ hội kiểm tra chúng trước khi đăng nhận xét của mình: https://www.google. com/xu hướng/khám phá # q = jquery% 2C% 20angular & cmpt = q & tz = Etc% 2FGMT-2 –

1

vấn đề của bạn là cr (carriage return)

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

bạn có thể sử dụng:

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

Giải pháp chính xác ở đây là gì? – AHH

+0

Giải pháp ở đây là để loại bỏ các ngắt dòng (trả về vận chuyển) từ Base 64. –

Các vấn đề liên quan