- 当前 Bug 的表现(可附上截图)
IOS环境中微信小程序上传图片有概率出现图片不全的问题
- 预期表现
IOS环境中微信小程序上传图片都是完整的。
- 复现路径
- 提供一个最简复现 Demo
上传
{{title}}
image {
max-width: 100%;
display: block;
}
.show-image {
width: 100%;
height: 100%;
padding: 0 8rpx;
box-sizing: border-box;
}
.clear {
background-color:rgba(0, 0, 0, 0.5);
color: #f5f5f5;
position:absolute;
bottom:60rpx;
left:8rpx;
right:8rpx;
}
.imgUpload {
overflow: hidden;
position: relative;
}
@media only screen and (max-width: 320px) {
.imgUpload {
height: 4rem;
}
}
@media (max-width: 360px) and (min-width: 321px) {
.imgUpload {
height: 4.5rem;
}
}
@media (max-width: 620px) and (min-width: 361px) {
.imgUpload {
height: 5rem;
}
}
/**
* 自定义图片上传插件
* 使用方法:
*
属性说明:
imgupload:上传图片后接收图片路径的函数
inner-id:图片唯一id
server: 图片上传的服务器路径(path.name)
placeholder: 预览的图片(自行判断显示预览图片)
title: 模块的显示标题(可选)
inner-text: 模块上传描述(可选)
img: 模块的显示图片(可选)
source: 以拍照或者上传的方式上传图片(可选,默认两者兼有)
*/
// 未解决问题,安卓会二次压缩图片导致图片模糊。
const upng = require('../script/UPNG.js');
const app = getApp();
Component({
options: {
multipleSlots: true // 在组件定义时的选项中启用多slot支持
},
/**
* 组件的属性列表
*/
properties: {
innerId: {
type: String,
value: '',
},
title: {
type: String,
value: '',
},
innerText: {
type: String,
value: '',
},
server: {
type: String,
value: '',
},
placeholder: {
type: String,
value: "https://gl.fabulian.cn/wx/image/upload-img.jpg",
observer :function(e){
let pram = this.data.pram;
pram[this.properties.innerId] = e
this.setData({
pram: pram
})
}
}
},
/**
* 组件的初始数据
*/
data: {
defaultImg: "https://gl.fabulian.cn/wx/image/upload-img.jpg",
imgUrl: app.server.imgUrl,
opacity: 0,
cvs: {
width: 720,
height: 720
},
pram: new Object
},
/**
* 组件的方法列表
*/
methods: {
onLoad: function (e){
this.setData({
defaultImg: this.properties.placeholder
})
},
/**
* 照片上传
*/
gotoShow: function(e) {
const _this = this;
wx.chooseImage({
count: 1, // 最多可以选择的图片张数,默认9
sizeType: ['compressed'], // original 原图,compressed 压缩图,默认二者都有
success: function(photo) {
wx.getImageInfo({
src: photo.tempFilePaths[0],
success: function(item) {
const photo_canvas = e.currentTarget.id;
// create Canvas
let ctx = wx.createCanvasContext(photo_canvas, _this);
let width = item.width;
let height = item.height;
_this.setData({
cvs: {
width: width,
height: height
}
})
ctx.drawImage(photo.tempFilePaths[0], 0, 0, width, height) //将图片填充在canvas上