利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)


Posted in Javascript onDecember 02, 2016

 利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)

<body>
 <div class="container demo">
  <div class="big">
   <p class="instructions">大图预览</p>
   <div class="bigframe">
    <img width="300" height="300" src="images/resized_pic.jpg" alt="" />
   </div>
  </div>
  <div class="small">
   <p>小图缩放</p>
    <div class="smallframe" >
    <div class="pre" id="preview">
     <img src="images/resized_pic.jpg" alt="" />
    </div>
   </div>
  </div>
 </div>
</body>

先总结一下:

最近练手,写了一些小东西,都是网上已有的成熟的JQ或JS,但在练手的过程中,我发现,很多应用,其实最后,都是归根到元素的宽高变化,位置变化,通过事件或算法,最后形成了效果或应用。

如果大家看到一些很炫的东西效果,其实都可以往宽高,位置,显示隐藏,这些方面去分析。一步一步深入。是一点个人体会。好吧,进入正题。

如何让左边选择区域的图像信息和右边的同步显示出来?

一、右边显示和左边同步:

左边选择一块区域,那么右边要和这个区域的图像信息相同?其实质,也就是要移动右边的图像,让移动后的右边图片,在显示区域当中,显示的图像信息,正好和左边的选择区域一样。

二、如何移动右边图像

要移动图片,也就是移动一个元素,可以有改变TOP LEFT值,这是在有绝对或相对定位的情况下。而这里,没有。

所以用到改变margin-top margin-left值的方式。

三、移动公式

利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)

上图中:黑色:图片,白色:选择区,红色:起始点,绿色:起始点的横纵坐标值; 黄色为:右边图片的margin-top,margin-left

假设:左边图片和右边图片,一样大小,宽和高都一样。我要在右边显示出左边白色区域的图像信息,就需要把右边图片的

margin-top值设为:红点的Y坐标值

margin-left值设为:红点的X坐标值

即:

margin-top = x;
margin-left = Y;

但是现在假设不成立,因为右边图片的大小,是随时变化的(第一篇分析中有);

而变化是根据一个比例值来的。

所以这里不管是图片放大,还是缩小,原来

都应该乘以这个放大或缩小的比例值:

margin-top = scaleX*x;
margin-left = scaleX*Y;

好了,现在可以得到移动的位置值了。也就是说左边和右边可以同步显示图像信息了。

以上就是本文的全部内容,希望对大家有所帮助,有兴趣的朋友可以看下《利用jQuery插件imgAreaSelect实现图片上传裁剪(放大缩小)》,谢谢对三水点靠木的支持!

Javascript 相关文章推荐
extjs form textfield的隐藏方法
Dec 29 Javascript
javascript中的array数组使用技巧
Jan 31 Javascript
20款效果非常棒的 jQuery 插件小结分享
Nov 18 Javascript
利用CSS、JavaScript及Ajax实现高效的图片预加载
Oct 16 Javascript
Javascript正则控制文本框只能输入整数或浮点数
Sep 02 Javascript
JS实现具备延时功能的滑动门菜单效果
Sep 17 Javascript
JavaScript函数中关于valueOf和toString的理解
Jun 14 Javascript
20170918 前端开发周报之JS前端开发必看
Sep 18 Javascript
EL表达式截取字符串的函数说明
Sep 22 Javascript
VsCode里的Vue模板的实现
Aug 12 Javascript
Vue自定义多选组件使用详解
Sep 08 Javascript
原生JavaScript实现弹幕组件的示例代码
Oct 12 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
Dec 02 #Javascript
Vue.js路由组件vue-router使用方法详解
Dec 02 #Javascript
搭建Bootstrap离线文档的方法
Dec 02 #Javascript
巧用Javascript的逻辑运算符
Dec 02 #Javascript
Vue.js第四天学习笔记(组件)
Dec 02 #Javascript
Javascript之面向对象--接口
Dec 02 #Javascript
Javascript之面向对象--封装
Dec 02 #Javascript
You might like
php读取html并截取字符串的简单代码
2009/11/30 PHP
PHP+jquery+ajax实现即时聊天功能实例
2014/12/23 PHP
php检测url是否存在的方法
2015/04/14 PHP
php metaphone()函数的定义和用法
2016/05/15 PHP
php mysql 封装类实例代码
2016/09/18 PHP
thinkPHP引入类的方法详解
2016/12/08 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
php实现微信公众号企业转账功能
2018/10/01 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
2019/09/03 PHP
laravel5.1框架model类查询的实现方法
2019/10/08 PHP
页面版文本框智能提示JS代码
2009/11/20 Javascript
jQuery提交多个表单的小例子
2013/06/30 Javascript
基于jquery扩展漂亮的CheckBox(自己编写)
2013/11/19 Javascript
node.js中的fs.fstatSync方法使用说明
2014/12/15 Javascript
浅谈javascript的分号的使用
2015/05/12 Javascript
jquery彩色投票进度条简单实例演示
2020/07/23 Javascript
JavaScript 中对象的深拷贝
2016/12/04 Javascript
uploader秒传图片到服务器完整代码
2017/04/22 Javascript
详解nodeJS之二进制buffer对象
2017/06/03 NodeJs
利用jQuery实现简单的拖曳效果实例代码
2017/10/20 jQuery
如何换个角度使用VUE过滤器详解
2019/09/11 Javascript
python实现跨文件全局变量的方法
2014/07/07 Python
Python正则表达式如何进行字符串替换实例
2016/12/28 Python
Python中xrange与yield的用法实例分析
2017/12/26 Python
Python基于jieba库进行简单分词及词云功能实现方法
2018/06/16 Python
详解用python自制微信机器人,定时发送天气预报
2019/03/25 Python
Python 使用type来定义类的实现
2019/11/19 Python
python基于plotly实现画饼状图代码实例
2019/12/16 Python
建筑工程专业毕业生自荐信
2013/10/19 职场文书
财务会计专业毕业生自荐信
2013/10/19 职场文书
司机职责范本
2014/03/08 职场文书
关于公司年会的开幕词
2016/03/04 职场文书
Vue接口封装的完整步骤记录
2021/05/14 Vue.js
Python办公自动化之教你如何用Python将任意文件转为PDF格式
2021/06/28 Python
常用的MongoDB查询语句的示例代码
2021/07/25 MongoDB
2022微信温控新功能上线
2022/05/09 数码科技