2014-02-26 45 views
0

我不是一个JavaScript专家(是一个JAVA/ATG开发者),和我遇到一些麻烦以下:问题越来越画布渲染的base64图像

我想要得到的值之前编码的base64图像在画布上呈现。

base 64映像的值来自Java Bean。

我的代码如下:

var imageObj = new Image(); 
imageObj.src = dataURIStringSyntax.value + imgData.value; 
imageObj.onload = function(){ 
    context.drawImage(imageObj, 0, 0); 
} 

...其中dataURIStringSyntax是“数据:图像/ JPG; BASE64”的图像的一部分,并且imgData是进行BASE64编码这些是使用设置var dataURIStringSyntax = document.getElementById("dataURIStringSyntaxString");var imgData = document.getElementById("dataURL");

这将导致一个黑块所呈现的画布上,而不是实际的图像上

但是,如果我做到以下几点:。

imageObj.src = "data:image/jpg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4RD0... 

图像呈现在画布上,如我所料。

我该做什么错?我可以通过向它添加相关的值来构建imgObj.src的方式来破坏某些东西吗?

任何帮助将不胜感激。

更新:事实证明,图像的原始编码是腐败的,所以修正后,它现在工作。 感谢那些提出建议的人。 :)

+0

你在连接中缺少一个逗号,不是吗? – jhohlfeld

+0

检查后,没有。 'dataURISyntaxString'是'data:image/jpg; base64'。应该有另一个? – dradd

+0

尝试将构造的字符串记录到控制台('console.log(dataURIStringSyntax.value + imgData.value)')并将其复制/粘贴到新的选项卡/地址栏中,如果图像正确,则应显示图像 – K3N

回答

0

尝试将onload函数放在.src之上。生成时可能已经加载了图像,因此在设置之前调用onload。

+0

对不起,试过了,但没有成功。 – dradd