Files
WAI_Project_UNIX/pages/demo/other/cropper.uvue
2025-07-30 18:42:46 +08:00

85 lines
2.1 KiB
Plaintext

<template>
<cl-page>
<view class="p-4">
<cl-text size="lg" bold class="mb-4">图片裁剪器演示</cl-text>
<view class="mb-4">
<cl-text size="sm" color="info" class="mb-2">操作说明:</cl-text>
<cl-text size="xs" color="placeholder" class="block mb-1"
>• 拖拽图片进行移动</cl-text
>
<cl-text size="xs" color="placeholder" class="block mb-1"
>• 双指缩放图片(围绕双指中心缩放)</cl-text
>
<cl-text size="xs" color="placeholder" class="block mb-1"
>• 拖拽裁剪框进行移动</cl-text
>
<cl-text size="xs" color="placeholder" class="block mb-1"
>• 拖拽裁剪框四角进行缩放</cl-text
>
<cl-text size="xs" color="placeholder" class="block mb-1"
>• 缩放时会显示辅助线</cl-text
>
<cl-text size="xs" color="warning" class="block"
>• 图片会自动保持不小于裁剪框大小</cl-text
>
</view>
<view class="flex justify-center">
<cl-cropper
:src="imageSrc"
:width="320"
:height="320"
:crop-width="200"
:crop-height="200"
:max-scale="3"
:min-scale="0.5"
@crop="onCrop"
@load="onImageLoad"
></cl-cropper>
</view>
<view class="mt-4 space-y-2">
<cl-button @tap="selectImage" block>选择图片</cl-button>
<cl-button @tap="useDefaultImage" type="light" block>使用默认图片</cl-button>
</view>
</view>
</cl-page>
</template>
<script lang="ts" setup>
import { ref } from "vue";
const imageSrc = ref("/static/logo.png");
function selectImage() {
// 选择图片
uni.chooseImage({
count: 1,
sizeType: ["original", "compressed"],
sourceType: ["album", "camera"],
success: (res) => {
if (res.tempFilePaths.length > 0) {
imageSrc.value = res.tempFilePaths[0];
}
}
});
}
function useDefaultImage() {
imageSrc.value = "/static/logo.png";
}
function onCrop(result: any) {
console.log("裁剪结果:", result);
uni.showToast({
title: "裁剪完成",
icon: "success"
});
}
function onImageLoad(e: any) {
console.log("图片加载完成:", e);
}
</script>