2013-05-08 103 views
62

我想设置的图像源到Base64源图片来源,但它不工作:如何设置使用Base64

JSfiddle.net/NT9KB

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

JavaScript的

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

它适用于删除base64字符串中的换行符。小提琴更新。 – 2013-05-08 20:20:00

回答

87

尝试使用setAttribute代替:

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

真正的答案: (并确保你删除的换行符在以base64。)

+0

thx,我会在10分钟内接受,为什么setAttribute更好? – poppel 2013-05-08 20:27:39

+0

@poppel我不认为它很重要,但我第一次尝试修复你的小提琴是使用'setAttribute'。之后,我注意到了base64编码中的换行符。 (因为我急于获得提交的答案,所以在修复换行符后,我没有用src ='尝试它。) – 2013-05-08 20:47:19

+0

您应该在'data:...'之前添加'''使其工作。 – Vadim 2013-05-08 20:52:41

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

如果你更喜欢使用jQuery来设置从Base64编码的图像:

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

@TruthSerum我们没有使用它,因为我们切换到React堆栈。但为了好玩,你是否有统计证据来证明你的说法?你真的认为没有使用jQuery的遗留Web应用程序? 您的评论是基于您的个人意见的,并且非常浪费我个人的时间。此外,如果您检查项目,它仍然保持并且有一个巨大的追随者基地。 https://github.com/jquery/jquery/commits/master – 2016-04-25 17:33:03

+5

另外@TruthSerum这里有一些统计数据,因为在发表评论前你没有机会检查他们: https://www.google。 com/trends/explore#q = jquery%2C%20angular&cmpt = q&tz = Etc%2FGMT-2 – 2016-04-25 17:36:41

1

你的问题是CR(回车)

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

您可以使用:

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

这里的解决方案究竟是什么? – AHH 2017-02-16 10:33:14

+0

这里的解决方案是从Base 64中删除换行符(回车符)。 – 2017-07-25 15:57:54