⼩程序开发——base64位图⽚显⽰问题
前⾔:
⽬前⼩程序项⽬需要后端借⼝提供验证码图⽚,后端是以base64位返回的,按照H5的做法,前边拼上 data:image/png;base64, 应该就可以了,关键代码如下:
H5:
<img :src="asynImg" @click="getImage();" class="code">
_self.asynImg = 'data:image/png;base64,' + response.data.data;
如此,显⽰正常,没有做任何特殊处理。
⼩程序:
<image class='fr' wx:if="{{validate_code_data&&validate_code_data.data}}" src="data:image/png;base64,{{validate_code_data.data}}"></image>
当然也可以直接在js中把base64位的格式头拼接在数据的前边,这个并不影响。关键是⼩程序种,图⽚电脑分辨率怎么调
竟然不显⽰了,这是为什么呢?
异常解析:
看下后台返回的数据:北京国防大学
可以看到,后台返回的base64数据是有换⾏的,经查证,后端返回的base64位数据是⼀致的,包括编译后的html和wxml代码结构层⾯都是⼀样的,这只能说明⼩程序兼容性不如h5了。
那么我们就需要在⼩程序种对后端提供的数据进⾏去换⾏处理了,关键代码如下:
解决⽅案:
var base64 = res && res.data
if (base64) {
base64 = place(/[\r\n]/g, "")
res.data = base64
self.setData({
validate_code_data: res司理理
})
}
感恩节快乐的短句子如上,只需⼀⾏代码,即可完美展⽰验证码。
后记:
⽹上还有另⼀种处理⽅法,如下:
var array = wx.base64ToArrayBuffer(res.data)
140平方的房子装修大概需要多少钱
var base64 = wx.arrayBufferToBase64(array)
that.setData({ captchaImage: 'data:image/png;base64,' + base64});
学雷锋手抄报内容
这种⽅法是可以显⽰图⽚,但是有些不正常。具体表现是连续点击会出现图⽚不显⽰,控制台报错:
VM1437:1 thirdScriptError
"atob" failed;undefined
Error: "atob" failed
调试了下,报错的时候在第⼆⾏代码这⾥var base64 = wx.arrayBufferToBase64(array) 变量已经为空了,也就是这个转换出了问题。
⽹上查了下,这个问题应该还是后端返回的base64串带换⾏导致的,如果要使⽤这种⽅式,也是需要在前边去掉换⾏的。不过话⼜说回来了,既然去掉换⾏能处理这个问题,那么还何必再多加两⾏转换
的代码呢。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

探讨在百度贴吧用加“超链接”的图片引流量的技巧
« 上一篇
将word()文档转换为图片(jpg,bmp,gif,png)文件方法总结
下一篇 »

发表评论

推荐文章

热门文章

最新文章

标签列表