请求后端接口 返回的时一张图片 如何在img中显示?
preview里查看就是显示一张图片
console.log(img):
.]
用blob createObjectURL转换成地址后前端img还是访问不到的效果
结果
代码
this._http.doGet(this, 'createQRCode', {id: this.lessonId}, (res) => {
var img = document.createElement('img')
const myBlob = new window.Blob([res.data], {type: 'image/jpeg'})
console.log(myBlob)
const qrUrl = window.URL.createObjectURL(myBlob)
img.src = qrUrl
img.onload = function () {
window.URL.revokeObjectURL(qrUrl)
}
const imgDiv = document.querySelector('.qr-div')
imgDiv.appendChild(img)
})
首先需要设置axios responseType: 'blob'
然后直接createObjectURL即可
const qrUrl = window.URL.createObjectURL(res.data)
var img = document.createElement('img')
img.src = qrUrl
img.onload = function () {
window.URL.revokeObjectURL(qrUrl)
}
const imgDiv = document.querySelector('.qr-div')
imgDiv.appendChild(img)
如果是资源链接,直接用
img
标签如果是
blob
格式的数据,可以用URL.createObjectURL()
创建一个临时的url
,然后再用img
标签,使用过后不要忘记URL.revokeObjectURL()
如果不想用
img
标签,还可以用canvas
的drawImage()
或者getImageData()
来渲染图片,也可以达到预览的效果获取还可以直接接口的 uri 写到
img
标签中,会自动发一个get
类型的请求出去的,如果返回的资源格式是图片,也可以显示