base64的图片数据真机draw不出来
发布于 6 年前 作者 xuegang 6570 次浏览 来自 问答

如果是 Bug:

base64的二维码数据在调试时用drawimage()可以显示出来,可是到真机上就不显示。把数据包含在image标签里可以显示出来。

是drawimage的bug吗

9 回复

嗯嗯,我在论坛里找到了问题的原因,需要将base64里的空格、换行都替换掉。

base64Url = base64Url.replace(/\ +/g, “”); //去掉空格方法

base64Url = base64Url.replace(/[\r\n]/g, “”);

 是的,

可以啊,前面要加前缀,已经解决了,在保存图片时将输出图片宽、高设置高一些。

@赵文浩,要怎么加前缀?

res.image 是返回来的 小程序码

 var code = res.image.replace(/[\r\n]/g, “”) //这是替换空格

前缀如何加?

“data:image/png;base64,” +res.image   //这样吗?直接都调试工具都无法绘画出来了

至今还是不能draw base64 在真机上,开发工具可以,请问怎么解决的啊… 替换空格也不行啊…

@赵文浩,遇到同样的问题,用base64,在页面用image标签的src显示没有问题,用canvas将小程序码绘制上去,开发工具显示也没有问题,但是如果存到tempfile就显示不出来小程序码,你具体是怎么解决的是否能指点迷津。

@赵雅,你可以将小程序码返回的数据在你的后台base64_encoded一下 (PHP),然后再返回到小程序端,加上前缀直接就能在image标签里使用了。

数据加前缀就行了,如果还draw不出来,看看draw(true)

  var code = res.image.replace(/[\r\n]/g, “”) //这是替换空格,我没加这个前缀,返回的小程序码的格式base64的,然后直接加"data:image/png;base64," 

用image标签也不能展示base64类型的图片数据吧,你是怎么显示出来的?

回到顶部