我整个下午一直在谷歌搜索这个问题,似乎无法在任何地方找到Dolphin和Base64图像或数据URL一起出现的地方。但是当我找到关于只是嵌入base64图像的文章时,他们几乎都说它几乎适用于所有浏览器,但是IE。当然,我不能只查看设备上的darn页面源或任何错误控制台(Samsung Galaxy Tab Gingerbread)来查看页面正在解释的内容。我得到的只是?图像应该在哪里。适用于Chrome和Opera,但Dolphin或股票浏览器均无效。
基本上,我有一个第三方签名板控件,其签名图像作为base64编码字符串返回给我。然后我接受base64编码的字符串,将其转换为DataURL并将其作为src分配给我的img控件。就像Chrome和Opera上的魅力一样,但在我需要它处理的任何一个移动浏览器上都没有。
var canvas = signaturestr.toDataURL("image/png") //Have also tried jpg and bmp
$("#image").attr("src", canvas)
这给了我?图像应该在哪里。所以要么我需要一种方法来获取数据URL并使其可以接受这些浏览器,或者我需要能够使用原始base64代码来生成图像。同样重要的是要注意,这是一个离线应用程序,我需要所有解决方案都在javascript或jquery。
编辑:发现来自其他网站(包括来自stackoverflow论坛的头像)的base64图像确实出现在这些浏览器上。尝试过减小图像的大小,但仍然没有运气。仍然得到替代文字和?尺寸绝对不是问题。将我的图像缩小到比工作的头像更小的尺寸。真的不知道为什么这个图像在这些浏览器上不起作用。看起来与工作的图像完全相同。
答案 0 :(得分:5)
我有类似的问题,发现了这个:
当您尝试加载JPEG
文件时,dataURL
错误...它以data:base64
而不是data:image/jpeg;base64
开头。我解决了这个问题:
var image = new Image();
image.onload = doSomethingElse();
image.src = myDataURL.replace('data:base64', 'data:image/jpeg;base64');
PNG文件似乎工作正常。
我使用Android 4(冰淇淋三明治)进行测试,效果很好 - 甚至可以直接从设备上加载大型照片。
答案 1 :(得分:1)
能够简单地在新的禁用控件实例上重新显示捕获的签名,而不是转换为图像并以此方式显示。工作原理相同。