详细问题描述
微信小程序
和h5+都是正常图片地址
但是h5却是base64字符串。而且不支持jpg 并且图片是空白透明的。没有像素。
微信小程序
和h5+都是正常图片地址
但是h5却是base64字符串。而且不支持jpg 并且图片是空白透明的。没有像素。
getImageInfo() {
var _this = this;
uni.showLoading({
title: '图片生成中...',
});
// 将图片写入画布
const ctx = uni.createCanvasContext('myCanvas');
ctx.drawImage(_this.imageSrc, 0, 0, IMG_REAL_W, IMG_REAL_H);
ctx.draw(true, () => {
// 获取画布要裁剪的位置和宽度 均为百分比 画布中图片的宽度 保证了在微信小程序中裁剪的图片模糊 位置不对的问题 canvasT = (_this.cutT / _this.cropperH) (_this.imageH / pixelRatio)
var canvasW = ((_this.cropperW - _this.cutL - _this.cutR) / _this.cropperW) IMG_REAL_W;
var canvasH = ((_this.cropperH - _this.cutT - _this.cutB) / _this.cropperH) IMG_REAL_H;
var canvasL = (_this.cutL / _this.cropperW) IMG_REAL_W;
var canvasT = (_this.cutT / _this.cropperH) IMG_REAL_H;
uni.canvasToTempFilePath({
x: canvasL,
y: canvasT,
width: canvasW,
height: canvasH,
destWidth: canvasW,
destHeight: canvasH,
quality: 0.5,
canvasId: 'myCanvas',
success: function (res) {
uni.hideLoading()
// 成功获得地址的地方
/ uni.previewImage({
current: '', // 当前显示图片的http链接
urls: [res.tempFilePath] // 需要预览的图片http链接列表
}) /
// #ifdef H5
_this.filePathsss = res.tempFilePath
console.log('H5===>' + _this.filePathsss)
_this.getchangeHeadImg()
// #endif
//#ifdef MP-WEIXIN
uni.getFileSystemManager().readFile({
filePath: res.tempFilePath, //选择图片返回的相对路径
encoding: 'base64', //编码格式
success: res => { //成功的回调
console.log('data:image/png;base64,' + res.data)
_this.filePathsss = res.data
console.log('MP-WEIXIN===>' + _this.filePathsss)
_this.getchangeHeadImg()
}
})
//#endif
// #ifdef APP-PLUS
var file = res.tempFilePath
plus.io.resolveLocalFileSystemURL(file, function ( entry ) {
var reader = new plus.io.FileReader();
reader.onload = function(e) {
console.log('file0000000000000000000000' + e.target.result)
_this.filePathsss = e.target.result
console.log('APP-PLUS===>' + _this.filePathsss)
_this.getchangeHeadImg()
}
reader.readAsDataURL(entry,"UTF-8");
});
// #endif
console.log(_this.filePathsss)
}
});
});
},
已修复设置输出宽高属性计算错误问题,下次发版时生效
width: ,
height: ,
destWidth: ,
destHeight: ,
回复 DCloud_uni-ad_HDX: 试了下,图片出来了,但是有点点截的范围不准,确切的说是起始点越往右越不准,官方示例中把这个改成这样就可以了,要变成2倍 uni.canvasToTempFilePath({
x: canvasL + canvasL,
y: canvasT + canvasT,
2019-05-20 11:09
弹一尘 (作者)
这个代码在小程序,h5+ 都是有效的。h5 是空白的 并且返回的base64 是png jpg无效
2019-04-25 17:01