cropper.uvue 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <template>
  2. <cl-page>
  3. <view class="cropper-demo">
  4. <cl-cropper
  5. :src="imageSrc"
  6. :max-scale="3"
  7. :min-scale="0.5"
  8. @crop="onCrop"
  9. @load="onImageLoad"
  10. ></cl-cropper>
  11. <!-- 选择图片按钮 -->
  12. <view class="select-image-btn" @tap="selectImage">
  13. <cl-button type="primary" size="small">选择图片</cl-button>
  14. </view>
  15. </view>
  16. </cl-page>
  17. </template>
  18. <script lang="ts" setup>
  19. import { ref } from "vue";
  20. const imageSrc = ref("https://unix.cool-js.com/images/demo/avatar.jpg");
  21. function selectImage() {
  22. // 选择图片
  23. uni.chooseImage({
  24. count: 1,
  25. sizeType: ["original", "compressed"],
  26. sourceType: ["album", "camera"],
  27. success: (res) => {
  28. if (res.tempFilePaths.length > 0) {
  29. imageSrc.value = res.tempFilePaths[0];
  30. }
  31. }
  32. });
  33. }
  34. function onCrop(result: any) {
  35. console.log("裁剪结果:", result);
  36. uni.showToast({
  37. title: "裁剪完成",
  38. icon: "success"
  39. });
  40. }
  41. function onImageLoad(e: any) {
  42. console.log("图片加载完成:", e);
  43. }
  44. </script>
  45. <style lang="scss" scoped>
  46. .cropper-demo {
  47. @apply relative w-full h-full;
  48. }
  49. .select-image-btn {
  50. @apply absolute top-4 right-4;
  51. z-index: 10;
  52. }
  53. </style>