利用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 相关文章推荐
JavaScript/jQuery 表单美化插件小结
Feb 14 Javascript
JavaScript获取onclick、onchange等事件值的代码
Jul 22 Javascript
javascript读写XML实现广告轮换(兼容IE、FF)
Aug 09 Javascript
AngularJS使用angular-formly进行表单验证
Dec 27 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
Jun 01 Javascript
JavaScript数据类型转换的注意事项
Jul 31 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
Sep 29 Javascript
JS实现预加载视频音频/视频获取截图(返回canvas截图)
Oct 09 Javascript
Vue.js 利用v-for中的index值实现隔行变色
Aug 01 Javascript
浅谈Vue数据响应思路之数组
Nov 06 Javascript
小程序云开发实现数据库异步操作同步化
May 18 Javascript
vue iview实现动态新增和删除
Jun 17 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
这部好评如潮的动漫 知名梗频出 但是画风劝退很多人
2020/03/08 日漫
PHP网站提速三大“软”招
2006/10/09 PHP
php基础知识:类与对象(5) static
2006/12/13 PHP
PHP回溯法解决0-1背包问题实例分析
2015/03/23 PHP
php生成微信红包数组的方法
2019/09/05 PHP
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
写得不错的jquery table鼠标经过变色代码
2013/09/27 Javascript
javascript实现点击单选按钮链接转向对应网址的方法
2015/08/12 Javascript
教你用javascript实现随机标签云效果_附代码
2016/03/16 Javascript
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
2016/05/19 Javascript
BootStrap中
2016/12/10 Javascript
基于js实现二级下拉联动
2016/12/17 Javascript
jQuery实现复选框的全选和反选
2017/02/02 Javascript
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
2017/08/22 Javascript
vue中接口域名配置为全局变量的实现方法
2018/09/20 Javascript
VueCli3构建TS项目的方法步骤
2018/11/07 Javascript
详解vue路由篇(动态路由、路由嵌套)
2019/01/27 Javascript
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
Python中用pycurl监控http响应时间脚本分享
2015/02/02 Python
极简的Python入门指引
2015/04/01 Python
Python实现将xml导入至excel
2015/11/20 Python
Django实现快速分页的方法实例
2017/10/22 Python
python使用正则表达式的search()函数实现指定位置搜索功能
2017/11/10 Python
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
Python针对给定列表中元素进行翻转操作的方法分析
2018/04/27 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
深入理解Python异常处理的哲学
2019/02/01 Python
Python数据类型之Number数字操作实例详解
2019/05/08 Python
python调用函数、类和文件操作简单实例总结
2019/11/29 Python
python设置代理和添加镜像源的方法
2020/02/14 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
小学教师评语大全
2014/04/23 职场文书
事业单位个人查摆问题及整改措施
2014/10/28 职场文书
七年级上册语文教学计划
2015/01/22 职场文书
关于教师节的广播稿
2015/08/19 职场文书
Python3.10的一些新特性原理分析
2021/09/15 Python