github地址:https://github.com/yinzhida/vue-crop

git clone: https://github.com/yinzhida/vue-crop.git

这个小项目最近更新到了第2版,虽然还有很多不足,还是分享给大家。

简介

vue-crop是一个用于标记矩形选框位置的小插件(类似于jcrop)。不同于现有的大部分cropper的地方在于:它不与图片裁剪功能耦合,而是更专注于标记选框位置。这使它可以在更多的标记需求中得到应用。比如:图像/视频切割,绘制矩形标记。

实现功能

功能包括,绘制矩形选框,设定选区的最大最小宽高,自定义比例绘制等等。

实现原理

乍一看去,这个插件的功能还是比较简单。但是实际编写的时候发现还是有一些小的技巧的。比如,如何定义选区,以及如何定义用户拖拽选区的行为:

    // horizontal 简写h 代表横向, vertical 简写v 代表纵向
// 分成两路,一路先横着走,然后竖着走,另外一路先竖着走,再横着走,
// 最后都从start到达end
// x1,y1 hv1 hv2
// 口-----口-----口
// |start |
// | |
// 口vh1 口 hv3
// | |
// | |
// 口-----口-----口 end
// vh2 vh3 x2,y2

在这种起点与终点设定的基础上,确定等比例缩放的默认方向时,就需要识别出固定方向(默认修改:右、下)的坐标名称,这个过程比较复杂。第2版的修改主要是增加了每次用户拖动以修改选区时,对选框起点和终点进行重排的操作。重排保证了用户拖拽的方向始终为终点所在的方向,降低了编程的复杂度。如上图,用户拖拽hv2以后,则重排如下:

    // 重排后用户拖拽的点只改变终点的方向。
// vh2 vh3 end
// 口-----口-----口x2,y2
// | |
// | |
// 口vh1 口 hv3
// | |
// |x1,y1 |
// 口-----口-----口
// start hv1 hv2

这样设定以后,每次修改,需要校验的就只有x2,y2这两点的坐标。

对此插件有兴趣的同学可以在github的项目中交流。

基于vue的cropper插件编写分享的更多相关文章

  1. 基于vue的分页插件

    相信大家用过很多jquery的分页插件,那这次就用一用基于vue的分页插件. 这里的环境用的是springboot 首先要引入pagehelper的jar文件,版本是1.2.3,配置文件也需要配置一下 ...

  2. 推荐几款基于vue的使用插件

    1.muse-ui ★6042 - 三端样式一致的响应式 UI 库 2.vuetify ★11169 - 为移动而生的Vue JS 2组件框架 3.Vux ★12969- 基于Vue和WeUI的组件库 ...

  3. 基于Jquery、JqueryUI插件编写

    刚开始编写jquery插件的时候,只是从网上找个模板看着写,并不理解.刚刚仔细把官网的API看了下,突然觉得豁然开朗了.马上放假了想着应该整理整理不然忘了又. How to create a Jque ...

  4. 基于vue+leaflet+echart的足迹分享评论平台

    (其实题目是随便取的,目的只是用来证明Vue+leaflet+springboot技术栈的可行性) 效果 小专栏不支持上传视频?想看的话可以去我的知乎看最新的文章,那个应该可以.在这里 主要功能描述 ...

  5. vue插件编写与实战

    关于 微信公众号:前端呼啦圈(Love-FED) 我的博客:劳卜的博客 知乎专栏:前端呼啦圈 前言 热爱vue开发的同学肯定知道awesome-vue 这个github地址,里面包含了数以千计的vue ...

  6. 基于 Vue BootStrap的迷你Chrome插件

    代码地址如下:http://www.demodashi.com/demo/14306.html 安装 安装 Visual Studio Code 和Chrome, 自行FQ 详细安装这里略过 安装包管 ...

  7. jq动画插件,自制基于vue的圆形时钟

    首先附上jq插件库,里面的东西太炫了,建议学前端的可以看看学习下:http://www.jq22.com/ 里面有个“超个性动画版本的个人简历”,通过屏幕上不断打印内容,改变相应样式来实现动画简历,我 ...

  8. Vue插件编写、用法详解(附demo)

    Vue插件编写.用法详解(附demo) 1.概述 简单来说,插件就是指对Vue的功能的增强或补充. 比如说,让你在每个单页面的组件里,都可以调用某个方法,或者共享使用某个变量,或者在某个方法之前执行一 ...

  9. 基于Vue.js的Web视频播放器插件vue-vam-video@1.3.6 正式发布

    前言 今日正式发布一款基于Vue.js的Web视频播放器插件.可配置,操作灵活.跟我一起来体验吧! 线上地址体验 基于vue3.0和vue-vam-video,我开发了一款在线视频播放器. 网址: h ...

随机推荐

  1. CSPS模拟 100

    我又挂分了T_T 这么吉利的数字..本来想考的好一点的 T1 没加当前弧优化(其实也不会),若志了 各种低错连篇而且没想到点不联通..没有奇度点就直接从1开始搜了 于是喜提70(犯了这两个若志错误应该 ...

  2. JAVA程序打包方法-挺好

    https://blog.csdn.net/dj0721/article/details/72462688/

  3. CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths——dsu on tree

    题目描述 一棵根为1 的树,每条边上有一个字符(a-v共22种). 一条简单路径被称为Dokhtar-kosh当且仅当路径上的字符经过重新排序后可以变成一个回文串. 求每个子树中最长的Dokhtar- ...

  4. Git详解使用教程

    一. 什么是Git Git(读音为/gɪt/).是一个开源的 分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds 为了帮助管理 Linux ...

  5. Linux基础命令(二)

    6.cp copy 作用:复制文件 选项: -a 复制目录时使用并且可以保持属性不变,属性:属主,属组,权限 -r 复制目录时使用但是不可以保持属性不变 -p 保持属性不变 注意:其实只需要记一个-a ...

  6. vue项目iframe的传值问题

    前言 项目需要,我需要引入一个已经封装好的浏览器插件.插件只能以html的方式调用, 所以.我把插件的使用封装了一个html页面.vue项目则利用iframe的方式引入. 到这里我就遇到了一个问题,那 ...

  7. nyoj 209 + poj 2492 A Bug's Life (并查集)

    A Bug's Life 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 Background  Professor Hopper is researching th ...

  8. JAVA语 言 的 特 点

    Java到 底 是 一 种 什 么 样 的 语 言 呢? Java是 一 种 简 单 的 面 象 对 象 的 分 布 式 的 解 释 的 健 壮 的 安 全 的 结 构 中 立 的 可 移 植 的 性 ...

  9. Jib插件构建镜像push到阿里云镜像仓库

    一.前言 Jib:Google开源的Java容器化工具 可作为插件快速集成到项目中,构建镜像,实现 Java 应用容器化 下面贴出一张从网上看到的Jib描述~ 二.利用Jib插件构建镜像push到阿里 ...

  10. 读写分离很难吗?springboot结合aop简单就实现了

    目录 前言 环境部署 开始项目 注意 參考: 前言 入职新公司到现在也有一个月了,完成了手头的工作,前几天终于有时间研究下公司旧项目的代码.在研究代码的过程中,发现项目里用到了Spring Aop来实 ...