cropper.uvue 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <template>
  2. <cl-page>
  3. <view class="p-4">
  4. <cl-text size="lg" bold class="mb-4">图片裁剪器演示</cl-text>
  5. <view class="mb-4">
  6. <cl-text size="sm" color="info" class="mb-2">操作说明:</cl-text>
  7. <cl-text size="xs" color="placeholder" class="block mb-1"
  8. >• 拖拽图片进行移动</cl-text
  9. >
  10. <cl-text size="xs" color="placeholder" class="block mb-1"
  11. >• 双指缩放图片(围绕双指中心缩放)</cl-text
  12. >
  13. <cl-text size="xs" color="placeholder" class="block mb-1"
  14. >• 拖拽裁剪框进行移动</cl-text
  15. >
  16. <cl-text size="xs" color="placeholder" class="block mb-1"
  17. >• 拖拽裁剪框四角进行缩放</cl-text
  18. >
  19. <cl-text size="xs" color="placeholder" class="block mb-1"
  20. >• 缩放时会显示辅助线</cl-text
  21. >
  22. <cl-text size="xs" color="warning" class="block"
  23. >• 图片会自动保持不小于裁剪框大小</cl-text
  24. >
  25. </view>
  26. <view class="flex justify-center">
  27. <cl-cropper
  28. :src="imageSrc"
  29. :width="320"
  30. :height="320"
  31. :crop-width="200"
  32. :crop-height="200"
  33. :max-scale="3"
  34. :min-scale="0.5"
  35. @crop="onCrop"
  36. @load="onImageLoad"
  37. ></cl-cropper>
  38. </view>
  39. <view class="mt-4 space-y-2">
  40. <cl-button @tap="selectImage" block>选择图片</cl-button>
  41. <cl-button @tap="useDefaultImage" type="light" block>使用默认图片</cl-button>
  42. </view>
  43. </view>
  44. </cl-page>
  45. </template>
  46. <script lang="ts" setup>
  47. import { ref } from "vue";
  48. const imageSrc = ref("/static/logo.png");
  49. function selectImage() {
  50. // 选择图片
  51. uni.chooseImage({
  52. count: 1,
  53. sizeType: ["original", "compressed"],
  54. sourceType: ["album", "camera"],
  55. success: (res) => {
  56. if (res.tempFilePaths.length > 0) {
  57. imageSrc.value = res.tempFilePaths[0];
  58. }
  59. }
  60. });
  61. }
  62. function useDefaultImage() {
  63. imageSrc.value = "/static/logo.png";
  64. }
  65. function onCrop(result: any) {
  66. console.log("裁剪结果:", result);
  67. uni.showToast({
  68. title: "裁剪完成",
  69. icon: "success"
  70. });
  71. }
  72. function onImageLoad(e: any) {
  73. console.log("图片加载完成:", e);
  74. }
  75. </script>