AvatarCropper 头像裁剪

该组件一般的图片裁剪需求场景,尤其适合于头像裁剪方面。

平台差异说明

AppH5微信小程序支付宝小程序百度小程序头条小程序QQ小程序

基本使用

组件使用流程:

  1. 打开头像裁剪页面,同时传递配置基本参数(已默认配置好最优参数)
  2. 选取图片,调整图片合适位置和大小,确定裁剪并返回此裁剪结果
  3. 在原始页面监听uAvatarCropper事件,获得裁剪结果
  1. <template>
  2. <view class="wrap">
  3. <view class="u-avatar-wrap">
  4. <image class="u-avatar-demo" :src="avatar" mode="aspectFill"></image>
  5. </view>
  6. <u-button @tap="chooseAvatar">进入裁剪页</u-button>
  7. </view>
  8. </template>
  9. <script>
  10. export default {
  11. data() {
  12. return {
  13. avatar: 'https://cdn.uviewui.com/uview/common/logo.png',
  14. }
  15. },
  16. created() {
  17. // 监听从裁剪页发布的事件,获得裁剪结果
  18. uni.$on('uAvatarCropper', path => {
  19. this.avatar = path;
  20. // 可以在此上传到服务端
  21. uni.uploadFile({
  22. url: 'http://www.example.com/upload',
  23. filePath: path,
  24. name: 'file',
  25. complete: (res) => {
  26. console.log(res);
  27. }
  28. });
  29. })
  30. },
  31. methods: {
  32. chooseAvatar() {
  33. // 此为uView的跳转方法,详见"文档-JS"部分,也可以用uni的uni.navigateTo
  34. this.$u.route({
  35. // 关于此路径,请见下方"注意事项"
  36. url: '/uview-ui/components/u-avatar-cropper/u-avatar-cropper',
  37. // 内部已设置以下默认参数值,可不传这些参数
  38. params: {
  39. // 输出图片宽度,高等于宽,单位px
  40. destWidth: 300,
  41. // 裁剪框宽度,高等于宽,单位px
  42. rectWidth: 200,
  43. // 输出的图片类型,如果'png'类型发现裁剪的图片太大,改成"jpg"即可
  44. fileType: 'jpg',
  45. }
  46. })
  47. },
  48. }
  49. }
  50. </script>
  51. <style lang="scss" scoped>
  52. .wrap {
  53. padding: 40rpx;
  54. }
  55. .u-avatar-wrap {
  56. margin-top: 80rpx;
  57. overflow: hidden;
  58. margin-bottom: 80rpx;
  59. text-align: center;
  60. }
  61. .u-avatar-demo {
  62. width: 150rpx;
  63. height: 150rpx;
  64. border-radius: 100rpx;
  65. }
  66. </style>

注意事项

  • 裁剪页面内置在uView中,由于打开页面,需要先在pages.json声明页面,故请把以下内容复制到项目根目录的pages.json中的pages数组中:
  1. {
  2. "path": "uview-ui/components/u-avatar-cropper/u-avatar-cropper",
  3. "style": {
  4. "navigationBarTitleText": "头像裁剪",
  5. "navigationBarBackgroundColor": "#000000"
  6. }
  7. }
  • 裁剪后的结果,通过uni.$on监听uAvatarCropper事件,由于uni-app限制,H5端裁剪的结果为base64格式,其他端为blod二进制形式, 如果后端对接收格式有要求,请自行处理

API

以下参数,需要通过URL的get参数传参到裁剪页,非props。uView很多组件传递值的单位为rpx,注意这里的dest-widthrect-width单位为px

URL参数

参数说明类型默认值可选值
dest-width输出图片宽度,高等于宽,单位pxString | Number200-
rect-width裁剪框宽度,高等于宽,单位pxString | Number200-
file-type输出的图片类型,如果’png’类型发现裁剪的图片太大,改成”jpg”即可Stringjpgpng

Event

事件名说明回调参数
uAvatarCropper裁剪结束后的事件,通过uni.$on监听path: 裁剪的图片数据