微信小程序——关于图片

属性类型默认值必填说明
srcstring图片资源地址
modestringscaleToFill图片裁剪、缩放的模式
webpbooleanfalse默认不解析 webP 格式,只支持网络资源
lazy-loadbooleanfalse图片懒加载,在即将进入一定范围(上下三屏)时才开始加载
show-menu-by-longpressbooleanfalse长按图片显示发送给朋友、收藏、保存图片、搜一搜、打开名片/前往群聊/打开小程序(若图片中包含对应二维码或小程序码)的菜单
binderroreventhandle当错误发生时触发,event.detail = {errMsg}
bindloadeventhandle当图片载入完毕时触发,event.detail = {height, width}

mode 的合法值

说明
scaleToFill缩放模式,不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素
aspectFit缩放模式,保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来。
aspectFill缩放模式,保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取。
widthFix缩放模式,宽度不变,高度自动变化,保持原图宽高比不变
heightFix缩放模式,高度不变,宽度自动变化,保持原图宽高比不变
top裁剪模式,不缩放图片,只显示图片的顶部区域
bottom裁剪模式,不缩放图片,只显示图片的底部区域
center裁剪模式,不缩放图片,只显示图片的中间区域
left裁剪模式,不缩放图片,只显示图片的左边区域
right裁剪模式,不缩放图片,只显示图片的右边区域
top left裁剪模式,不缩放图片,只显示图片的左上边区域
top right裁剪模式,不缩放图片,只显示图片的右上边区域
bottom left裁剪模式,不缩放图片,只显示图片的左下边区域
bottom right裁剪模式,不缩放图片,只显示图片的右下边区域

wxml

<!--选择照片-->
<view class="name">
  <view class="left">上传照片</view>
  <view class="right">{{listNum}}/2</view>
</view>
<view class="aaa">
  <view class="picture" style="width:{{sWidth}}px;height:{{sHeight}}px;" bindtap="selectBefore" wx:if="{{addImageShow}}">
    <view class="jia"> + </view>
  </view>
  <view class="picture" style="width:{{sWidth}}px;height:{{sHeight}}px;" wx:for="{{list}}" wx:key="key">
    <image style="width:{{sWidth}}px;height:{{sHeight}}px;" src="{{item}}" bindtap="previewImage" bindlongpress="delImage" data-src="{{item}}" data-index="{{index}}"></image>
  </view>
</view>

wxss

.picture {
  margin-left: 1%;
  margin-top: 2px;
  width: 100px;
  height: 100px;
  border: 1px solid #eee;
  display: flex;
}
.jia {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 40px;
}
.picture image {
  width: 100px;
  height: 100px;
  display: flex;
}

js

///选择图片

picture:function(num,name) {
    var that = this ;
    wx.chooseImage({
      count: num ,
      success:function(res) {
        console.log(res);
        console.log(res.tempFilePaths , name + '图片地址')
         for (let i = 0; i < res.tempFilePaths.length; i++) {
            var string = 'list[' + that.data.list.length + ']' ;
            that.setData({
              [string]: res.tempFilePaths[i] ,
            })
          }
      }
    })
  },

///删除图片
  delImage:function(e) {
    var that = this ;
    console.log(e.currentTarget.dataset.index)
    console.log(e.currentTarget.dataset.src)
    var string = e.currentTarget.dataset.src ;
    var delList = that.data.list ;
    wx.showModal({
      cancelColor: '#000', ///取消颜色
      confirmColor: '#0c6' , ///确认颜色
      title: '删除图片' ,
      content: '确认要删除此图片吗?' ,
      success:function(res) {
        console.log(res) ;
        if(res.confirm) {
           console.log( '用户点击确定' )
           delList.splice(e.currentTarget.dataset.index,1) ;
           that.setData({
             list: delList ,
             addImageShow:true ,
           })
        } else {
          console.log( '用户点击取消' )
        }
      }
    })
    console.log(that.data.list)
  },
  ///图片放大预览
  previewImage: function (e) {  
    var that = this ;
    var current=e.target.dataset.src;
    wx.previewImage({
      current: current, // 当前显示图片的http链接
      urls: that.data.list // 需要预览的图片http链接列表
    })
  },
  ///上传图片
  uploadFile:function(fileSrc ,type ) {
    var that = this ;
    wx.uploadFile({
      filePath: fileSrc ,
      name: 'file',
      url: app.globalData.url + '/upload/lock/',
      header:{
        'content-type': 'text/html' ,
      },
      formData: {
        deviceID: that.data.deviceID ,
        userShenfen: that.data.userShenfen ,
        phone: that.data.pho ,
        type: type ,
      },
      success:function(res) {
        console.log(res , '上传结果')
        var string = JSON.parse(res.data)
        console.log(string)
        console.log(string.code)
      },
      fail:function(res) {
        console.log(res,'上传出错' , fileSrc , type )
        ///上传出错,重试
        that.uploadFile(fileSrc ,type ) ;
      }
    })
  },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值