UniApp实现图片上传与裁剪的实现方法

UniApp实现图片上传与裁剪的实现方法

一、UniApp简介

UniApp是一个基于Vue.js框架的跨平台开发框架,开发人员只需要编写一次代码,就能够发布到多个平台(iOS、Android、Web等),大大节省了开发和维护成本。

二、UniApp图片上传与裁剪的必要性

在实际开发中,图片上传与裁剪是一个非常基础的功能,几乎所有App都需要实现。在UniApp开发中,我们可以利用uni.uploadFile和uni.chooseImage API来实现图片上传功能,而图片裁剪则需要借助第三方插件。

三、UniApp图片上传的实现方法

3.1 uni.chooseImage()

uni.chooseImage()是UniApp提供的API,用于从本地相册或相机中选择图片。通过设置count参数可以选择一次性选择多张图片,而sizeType和sourceType参数则可以控制选择的图片类型和来源。

uni.chooseImage({

count: 1, // 最多可以选择的文件个数,默认为9

sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有

sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有

success: function (res) {

// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片

var tempFilePaths = res.tempFilePaths;

}

});

3.2 uni.uploadFile()

uni.uploadFile()是UniApp提供的API,用于上传图片至服务器。我们只需要设置filePath、name、url等参数即可将图片上传至目标服务器。

uni.uploadFile({

url: 'http://localhost:8080/upload',

filePath: 'tempFilePaths[0]',

name: 'file',

success: function (res) {

console.log('上传成功');

},

fail: function (res) {

console.log('上传失败');

}

});

四、UniApp图片裁剪的实现方法

UniApp本身并没有提供图片裁剪的API,但我们可以借助第三方插件来实现这个功能。本文以使用第三方插件的方式实现图片裁剪为例,介绍具体的实现方法。

4.1 安装插件

在HBuilderX中使用npm命令安装uview-ui插件。

npm install uview-ui

4.2 在页面中引入裁剪组件

在需要使用图片裁剪的页面的vue文件中,引入uview-ui组件库和uview-ui的图片裁剪组件。

<template>

<view>

<u-cropper

ref="cropper"

:config="cropperConfig"

@load="cropperLoad"

@success="cropperSuccess"

@fail="cropperFail">

</u-cropper>

</view>

</template>

<script>

import uView from 'uview-ui';

export default {

components: {

'u-cropper': uView['u-cropper']

},

};

</script>

<style>

/* 样式 */

</style>

4.3 绑定裁剪事件

在vue文件的methods中绑定裁剪事件。

methods: {

cropperLoad: function (e) {

console.log('裁剪器初始化完成');

},

cropperSuccess: function (res) {

console.log('裁剪成功,图片的临时路径为:' + res.url);

},

cropperFail: function (msg) {

console.log('裁剪失败:' + msg);

},

}

4.4 初始化裁剪设置

在vue文件的data中初始化裁剪设置。

data() {

return {

cropperConfig: {

cut: {

x: (this.sysWidth - this.cutSize) / 2,

y: (this.sysHeight - this.cutSize) / 2,

width: this.cutSize,

height: this.cutSize

},

src: '',

mode: 'scaleToFill',

sizeType: ['original', 'compressed'],

fileType: ['jpg', 'jpeg', 'png'],

quality: 80,

},

};

},

4.5 调用裁剪方法

在需要使用裁剪的页面中,通过uni.chooseImage()方法选择图片后,将返回的图片路径设置给裁剪组件的src属性,然后调用裁剪组件自带的裁剪方法即可实现图片裁剪。

uni.chooseImage({

count: 1,

sizeType: ['original', 'compressed'],

sourceType: ['album', 'camera'],

success: function (res) {

var tempFilePaths = res.tempFilePaths;

// 将图片路径设置给裁剪组件的src属性

this.$refs.cropper.src = tempFilePaths[0];

// 调用裁剪组件的裁剪方法

this.$refs.cropper.upload();

}

});

五、结语

以上就是UniApp实现图片上传与裁剪的完整实现方法。通过uni.chooseImage()和uni.uploadFile()实现图片上传功能,通过第三方插件实现图片裁剪功能,可以极大地简化图片上传、裁剪的开发难度,提高开发效率。