前端实现调用移动端拍照以及打开相册裁剪功能

本文介绍了如何在前端实现调用移动端摄像头拍照及从相册选取图片后进行裁剪的功能。通过创建一个Vue组件,利用HTML input[type=file]结合JavaScript的FileReader API读取图片,然后使用自定义的clip.js裁剪库实现裁剪功能。裁剪过程中涉及到图片比例调整、触摸拖动裁剪框以及保存裁剪结果。最后,裁剪完成后可以将图片上传到服务器。
摘要由CSDN通过智能技术生成
1、为模板(需要注意的一点,在<style scoped></style>里如果有scoped,需要把它去掉哦,否则裁剪框的样式就无效了,或者把css放到全局文件也行)
<template>
<div>
    <input type="file" class="file" accept="image/*;capture=camera" name="img" @change="clipImg($event)">
    <!-- 为裁剪框 -->
    <div class="clip-wp" id="clip-wp" v-show="isClip">
        <div id="container"></div>
        <button id="save-img" @click="saveImg">保存</button>
    </div>
    </div>
</template>
<script>
    import clip from '../clip/clip';
    export default{
        data(){
            return{
                isClip:false,
                isUpload:false,
                clipUrl:'',
                noScoll:function(evt){
                    this.isClip && evt.preventDefault();
                },
                clip:{}
            }
        },
        methods:{
            clipImg(event){
                this.clip = new clip('container',this);
                this.clip.init(event.target.files[0],document.body.clientWidth,document.body.clientWidth);
                this.isClip = true;
                document.body.addEventListener('touchmove',this.noScoll,false);

            },
            saveImg(){
                this.isClip = false;
                this.clip.save();
                document.body.removeEventListener('touchmove',this.noScoll,false);

            },
            uploadImg(){
                //上传到服务器或进行相关操作
                this.isUpload = true;
                console.log(this.clipUrl)
            }       
        }
    }
</script>

<style>
.file{
    height: 40px;
    display: block;
    margin: 40px auto 0;
}

.upload-wp{
    text-align: center;
    width: 300px;
    margin: 20px auto 0;
}
.upload-wp button {
   padding: 5px 10px;  
}
.upload-wp p{
 word-wrap: break-word;
        font-size: 12px;
}
.clip-wp{
    position: 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值