当前位置:   article > 正文

小程序上传图片裁剪工具 we-cropper的使用方法

we-cropper

小程序中提供了上传文件的api   wx.uploadfile() 但是,当用户上传头像或其它图片时,希望经过裁剪了之后再上传,微信没有提供裁剪的功能

我个可以从 github 上找到一个插件  we-cropper    还有一个插件叫 image-cropper (这个有兴趣可以研究一下,本人没有用过)

地址:https://github.com/we-plugin/we-cropper

下载 master的zip的包,解压后得到如下图

 

 

在要上传头像的wxml上给一个按钮 

<view class="uploadButton" bindtap="uploadimage">上传图片</view>

并绑定事件

  1. uploadimage:function(){
  2. wx.navigateTo({
  3. url: '/pages/upload/index',
  4. })
  5. }

点击后跳转到  /pages/upload/index 页面(在小程序中新建这个页面)

wxml页面

  1. //这个地方的文件位置根据自己的情况而定
  2. <import src="../../thirdUtils/cropper/we-cropper.wxml"/>
  3. <view class="cropper-wrapper">
  4. <template is="we-cropper" data="{{...cropperOpt}}"/>
  5. <view class="cropper-buttons" style="color: {{cropperOpt.boundStyle.color}}">
  6. <view
  7. class="upload btn"
  8. bindtap="uploadTap">
  9. 上传图片
  10. </view>
  11. <view
  12. class="getCropperImage btn"
  13. style="background-color: {{cropperOpt.boundStyle.color}};"
  14. bindtap="getCropperImage">
  15. 生成图片
  16. </view>
  17. </view>
  18. </view>

js文件

  1. /**
  2. * Created by sail on 2017/6/1.
  3. */
  4. import WeCropper from '../../thirdUtils/cropper/we-cropper.js'
  5. const app = getApp()
  6. const device = wx.getSystemInfoSync()
  7. const width = device.windowWidth
  8. const height = device.windowHeight - 50
  9. Page({
  10. data: {
  11. cropperOpt: {
  12. id: 'cropper',
  13. targetId: 'targetCropper',
  14. pixelRatio: device.pixelRatio,
  15. width,
  16. height,
  17. scale: 2.5,
  18. zoom: 8,
  19. cut: {
  20. x: (width - 300) / 2,
  21. y: (height - 260) / 2,
  22. width: 300,
  23. height: 260
  24. },
  25. boundStyle: {
  26. color: "green",
  27. mask: 'rgba(0,0,0,0.8)',
  28. lineWidth: 1
  29. }
  30. }
  31. },
  32. touchStart(e) {
  33. this.cropper.touchStart(e)
  34. },
  35. touchMove(e) {
  36. this.cropper.touchMove(e)
  37. },
  38. touchEnd(e) {
  39. this.cropper.touchEnd(e)
  40. },
  41. //当点击生成图片按钮的时候,得到图片的src后,调用wx.uploadFile()上传图片,成功后可以再跳转到想要去的页面
  42. getCropperImage() {
  43. this.cropper.getCropperImage()
  44. .then((src) => {
  45. wx.uploadFile({
  46. url: 'http://t.kan.cn/roune/auth_api/uploadimage?uid=198', //这里是上传的服务器地址
  47. filePath: src,
  48. name: "avatar",
  49. success: function (res) {
  50. console.log(res);
  51. console.log("uploadOK");
  52. wx.redirectTo({
  53. ...........
  54. })
  55. }
  56. })
  57. })
  58. .catch((err) => {
  59. wx.showModal({
  60. title: '温馨提示',
  61. content: err.message
  62. })
  63. })
  64. },
  65. uploadTap() {
  66. const self = this
  67. wx.chooseImage({
  68. count: 1, // 默认9
  69. sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有
  70. sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
  71. success(res) {
  72. const src = res.tempFilePaths[0]
  73. // 获取裁剪图片资源后,给data添加src属性及其值
  74. self.cropper.pushOrign(src)
  75. }
  76. })
  77. },
  78. onLoad(option) {
  79. const { cropperOpt } = this.data
  80. cropperOpt.boundStyle.color = "green"
  81. this.setData({ cropperOpt })
  82. this.cropper = new WeCropper(cropperOpt)
  83. .on('ready', (ctx) => {
  84. console.log(`wecropper is ready for work!`)
  85. })
  86. .on('beforeImageLoad', (ctx) => {
  87. wx.showToast({
  88. title: '上传中',
  89. icon: 'loading',
  90. duration: 20000
  91. })
  92. })
  93. .on('imageLoad', (ctx) => {
  94. wx.hideToast()
  95. })
  96. }
  97. })

.wxss 文件

  1. .cropper{
  2. position: absolute;
  3. top: 0;
  4. left: 0;
  5. }
  6. .cropper-buttons{
  7. background-color: rgba(0, 0, 0, 0.95);
  8. }
  9. .btn{
  10. height: 30px;
  11. line-height: 30px;
  12. padding: 0 24rpx;
  13. border-radius: 2px;
  14. color: #ffffff;
  15. }
  16. .cropper-buttons{
  17. display: flex;
  18. flex-direction: row;
  19. justify-content: space-between;
  20. align-items: center;
  21. position: absolute;
  22. bottom: 0;
  23. left: 0;
  24. width: 100%;
  25. height: 50px;
  26. padding: 0 20rpx;
  27. box-sizing: border-box;
  28. line-height: 50px;
  29. }

以上就可以上传裁剪 头像了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/565177
推荐阅读
相关标签
  

闽ICP备14008679号