在工作中,有一个前端上传图片到后台,后台需要前端传十六进制,直接转十六进制,后台无法,解析.
dealImg(base64){
return new Promise((resolve,reject) => {
const peopleImage = new Image()
peopleImage.src='data:image/jpg;base64,' + base64
peopleImage.onload= function(){
const canvasItem = document.createElement('canvas') // 创建一个canvas元素
const context = canvasItem.getContext('2d') // context相当于画笔,里面有各种可以进行绘图的API
const imageWidth = peopleImage.width/2 // 压缩后图片的宽度,这里设置为缩小一半
const imageHeight = peopleImage.height/2
console.log(imageWidth,imageHeight)
canvasItem.width = imageWidth // 设置绘图的宽度
canvasItem.height = imageHeight // 设置绘图的高度
// 使用drawImage重新设置img标签中的图片大小,实现压缩。drawImage方法的参数可以自行查阅W3C
context.drawImage(peopleImage, 0, 0, imageWidth, imageHeight)
// 使用toDataURL将canvas上的图片转换为base64格式
const data = canvasItem.toDataURL('image/jpeg')
// 将压缩后的图片显示到页面上的img标签
const val = data.replace(/^data:image\/\w+;base64,/, "")
let value = ''
for (let i = 0; i < val.length; i++) {
// 先转成unicode编码,再转成对应的16进制
value += '' + val.charCodeAt(i).toString(16)
}
resolve(value.toUpperCase()) // 去掉base64位头部
}
})
},```