uni-app 图片裁剪插件需求

发布于 1周前 作者 wuwangju 来自 Uni-App

uni-app 图片裁剪插件需求

官方模板里面有一个但是太卡,而且bug太多,希望能有一个性能较好,没啥问题的

1 回复

针对uni-app中的图片裁剪插件需求,我们可以利用uni-ui组件库中的u-cropper组件来实现图片裁剪功能。以下是一个简单的代码示例,展示如何在uni-app项目中集成和使用图片裁剪插件。

首先,确保你的uni-app项目已经安装了uni-ui组件库。如果未安装,可以通过以下命令安装:

npm install @dcloudio/uni-ui

然后,在你的页面中引入并使用u-cropper组件。以下是一个完整的页面示例:

<template>
  <view class="container">
    <!-- 上传图片按钮 -->
    <button @click="chooseImage">选择图片</button>
    
    <!-- 图片裁剪组件 -->
    <u-cropper
      v-if="imageUrl"
      :src="imageUrl"
      :fixed-box="true"
      :fixed-number="[1, 1]"
      :can-scale="true"
      @imgLoad="onImgLoad"
      @getCropBlob="onGetCropBlob"
    />
    
    <!-- 显示裁剪后的图片 -->
    <image v-if="croppedImageUrl" :src="croppedImageUrl" style="width: 100px; height: 100px;"></image>
  </view>
</template>

<script>
export default {
  data() {
    return {
      imageUrl: '', // 原图URL
      croppedImageUrl: '' // 裁剪后图片URL(base64)
    };
  },
  methods: {
    chooseImage() {
      uni.chooseImage({
        count: 1,
        success: (res) => {
          this.imageUrl = res.tempFilePaths[0];
        }
      });
    },
    onImgLoad(e) {
      console.log('图片加载完成', e);
    },
    onGetCropBlob(e) {
      const base64 = e.detail.base64;
      this.croppedImageUrl = base64;
      // 你可以将base64编码的图片上传到服务器或进行其他处理
      console.log('裁剪后的图片base64编码:', base64);
    }
  }
};
</script>

<style>
.container {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 20px;
}
button {
  margin-bottom: 20px;
}
</style>

在这个示例中,我们首先提供了一个按钮让用户选择图片,然后使用u-cropper组件显示并允许用户裁剪图片。当用户完成裁剪后,我们通过@getCropBlob事件获取裁剪后的图片(base64编码),并将其显示在页面上。

注意,u-cropper组件提供了丰富的配置选项,如裁剪框固定、缩放等,你可以根据需要调整这些配置。此外,裁剪后的图片可以通过base64编码直接用于页面显示,或者上传到服务器进行存储。

回到顶部