微信公众号开发之选择图片,上传图片
本文详细介绍了一种在微信小程序中实现图片选择、上传、下载及显示的方法。具体包括使用wx.chooseImage选择图片,wx.uploadImage上传图片至微信服务器,wx.downloadImage下载图片并将其转换为base64数据,最后在页面上显示处理后的图片。
function clickImg(that){
wx.chooseImage({
count: 1,
needResult: 1,
sizeType: ['original', 'compressed'],
// 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'],
// 可以指定来源是相册还是相机,默认二者都有
success: function(data) {
var localId = data.localIds; //把图片的路径保存在images[localId]中--图片本地的id信息,用于上传图片到微信浏览器时使用
wx.uploadImage({
localId: localId.toString(),
isShowProgressTips: 1,
// 默认为1,显示进度提示
success: function(res) {
var mediaId = res.serverId;
//调用后台方法存储medidld
//图片上传完成之后,进行图片的下载,图片上传完成之后会返回一个在腾讯服务器的存放的图片的ID--->serverId
wx.downloadImage({
serverId: res.serverId,
//需要下载的图片的服务器端ID,由uploadImage接口
isShowProgressTips: 1,
// 默认为1,显示进度提示
success: function(res) {
var localId = res.localId; // 返回图片下载后的本地ID
//通过下载的本地的ID获取的图片的base64数据,通过对数据的转换进行图片的保存
wx.getLocalImgData({
localId: localId,
// 图片的localID
success: function(res) {
var mediaId = res.serverId;
if (window.__wxjs_is_wkwebview) { //判断ios是不是用的wkwebview 内核
var localData = res.localData; //localData是图片的base64数据,可以用img标签显示
localData = localData.replace('jgp', 'jpeg');
$("#kin_img").attr("src", localData);
} else {
$("#kin_img").attr("src", mediaId);
}
});
}
})
},
fail: function(error) {
picPath = '';
localIds = '';
console.log(error);
}
});
},
fail: function(res) {
console.log(res);
}
});
};
后端上传图片接口:
之前同事做的一个微信扫码拍照的功能,通过调用微信公众号jssdk接口,实现扫码拍照,然后上传到微信,在从微信资源服务器上下载下来。之前都是正常的,在近期客户发现有问题,扫码拍照后,从服务器下载下来的图片是损坏的,无法打开。
通过服务器查看了下,扫码拍照上传的图片只有1k,然后百度了很多资料,最后这篇解决了我的问题,
地址:https://developers.weixin.qq.com/community/develop/doc/000c02041e4510dc87fa8a71c51c0

浙公网安备 33010602011771号