IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> uniapp vue3 裁剪头像(ksp-cropper) 支持旋转 和 缩放 -> 正文阅读

[移动开发]uniapp vue3 裁剪头像(ksp-cropper) 支持旋转 和 缩放

一、前言

自己写个项目,需要用到裁剪头像功能,那肯定就在插件市场搜索,找到了它,感谢作者这个插件,很棒。我的使用环境 uniapp vue3 移动端 Android 真机测试

具体我使用后的效果图如下:下面我主要是详细的补充一下ksp-cropper官方文档

二、使用场景效果图和代码

?解释操作逻辑:我点击右上角三个点图标,进入相册选择图片,得到选择的图片路径赋值给

ksp-cropper 组件,此时进入裁剪模式。点击确认,将得到裁剪后的图片路径。具体代码如下

<template>
	
	<view class="header">
		<view @click="goBack">
			<u-icon name="arrow-left" color="#fff" size="22px"></u-icon>
		</view>
		<text style="margin-left: 30rpx;">更换头像</text>
		<view class="moreDot" @click="selectNewImg">
			<u-icon name="more-dot-fill" color="#fff"></u-icon>
		</view>
	</view>
	<view class="portraitBox">
		<image mode="scaleToFill" class="myPortrait" :src="avatorUrl"></image>
	</view>
	<ksp-cropper 
		mode="free" 
		:width="250" 
		:height="250" 
		:maxWidth="1024" 
		:maxHeight="1024" 
		:url="url" @cancel="oncancel" @ok="onok"></ksp-cropper>
</template>

<script setup>
	import {userStore} from '@/stores/user.js';
	import { ref,onMounted } from "vue";
	const userStoreTemp =  userStore();
	let url=ref('');           //选择裁剪的图片
	let avatorUrl = ref('');  //显示的头像
	onMounted(()=>{
		avatorUrl.value = userStoreTemp.user.portrait;
	});
	//返回上个路由页面
	const goBack = ()=>{
		uni.navigateBack();
	}
	//选择新的图像
	const selectNewImg = ()=>{
		uni.chooseImage({
			count: 1, //默认9
			sizeType: ['original', 'compressed'], 
			success: function (res) {
				console.log(JSON.stringify(res.tempFilePaths));
				url.value = res.tempFilePaths[0];
			}
		});
	}
	
	const onok = (res)=>{
		console.log("点击确认",res);
		url.value = "";
		avatorUrl.value = res.path;
	};
	const oncancel = (res)=>{
		url.value = "";
		console.log("点击取消",res);
	};
	
</script>

<style scoped lang="less">
	.header{
		display: flex;
		flex-direction: row;
		justify-content: space-between;
		align-items: center;
		background-color: #000;
		height: 70rpx;
		line-height: 70rpx;
		color: #fff;
		padding: 8rpx 16rpx;
		.moreDot{
			padding: 15rpx 15rpx;
		}
	}
	.portraitBox{
		padding: 0 16rpx;
		.myPortrait{
			width: 500rpx;
			height: 500rpx;
		}
	}
	
</style>

?三、遇到的问题解释

1. 在app移动端状态下,无法上下左右拖拽

答:解决办法是进入源码uni_modules下面,找到ksp-cropper.vue文件,将其中的?event.preventDefault(); event.stopPropagation(); 两行代码注释即可

2.?安卓真机会一直卡在 处理中

答:是因为没在取消 和确定的处理函数中,将url的值设置为空。

3. 点击 确认裁剪 得到的路径是相对路径

_doc/uniapp_temp_1667466828646/canvas/16674669200830.png

这样的路径,可以显示图片,但无法通过 new plus.io.FileReade 读取出来。

我的需求是需要将该图片转化为二进制。我将该相对路径转化成绝对路径后,

//将对象路径转化为绝对路径
let temp   = plus.io.convertLocalFileSystemURL('相对路径');
//将fill协议 拼接完成 绝对路径
let imgStr = "file://"+temp;

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:39:30  更:2022-11-05 00:42:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 22:22:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码