利用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 相关文章推荐
jquery 学习之二 属性(类)
Nov 25 Javascript
一些主流JS框架中DOMReady事件的实现小结
Feb 12 Javascript
理解javascript中的回调函数(callback)
Sep 02 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
Mar 02 Javascript
jquery使用animate方法实现控制元素移动
Mar 27 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
Mar 13 Javascript
Angular项目中$scope.$apply()方法的使用详解
Jul 26 Javascript
JS Input里添加小图标的两种方法
Nov 11 Javascript
JS计算输出100元钱买100只鸡问题的解决方法
Jan 04 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
Apr 28 Javascript
微信小程序 确认框的实现(附代码)
Jul 23 Javascript
vue实现跳转接口push 转场动画示例
Nov 01 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的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
php实现的替换敏感字符串类实例
2014/09/22 PHP
浅谈PDO的rowCount函数
2015/06/18 PHP
apache和PHP如何整合在一起
2015/10/12 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
JS实现拖动示例代码
2013/11/01 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
2015/06/12 Javascript
node.js调用C++开发的模块实例
2015/07/03 Javascript
jQuery控制frames及frame页面JS的方法
2016/03/08 Javascript
JavaScript中for循环的几种写法与效率总结
2017/02/03 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
layui 数据表格 点击分页按钮 监听事件的实例
2019/09/02 Javascript
Element Notification通知的实现示例
2020/07/27 Javascript
Vue实现开关按钮拖拽效果
2020/09/22 Javascript
Python深入学习之闭包
2014/08/31 Python
Python安装使用命令行交互模块pexpect的基础教程
2016/05/12 Python
详解django中自定义标签和过滤器
2017/07/03 Python
简单谈谈python中的语句和语法
2017/08/10 Python
tensorflow实现简单的卷积神经网络
2018/05/24 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
2018/07/27 Python
元组列表字典(莫烦python基础)
2019/04/03 Python
python打印异常信息的两种实现方式
2019/12/24 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
2020/06/23 Python
移动Web—CSS为Retina屏幕替换更高质量的图片
2012/12/24 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(二)
2013/01/21 HTML / CSS
Canvas高级路径操作之拖拽对象的实现
2019/08/05 HTML / CSS
欧洲顶级的童装奢侈品购物网站:Bambini Fashion(面向全球)
2018/04/24 全球购物
平面设计自荐信
2013/10/07 职场文书
个人培训自我鉴定
2014/03/28 职场文书
遗产继承公证书
2014/04/09 职场文书
什么是就业协议书
2014/04/17 职场文书
主题实践活动总结
2014/05/08 职场文书
祝寿主持词
2015/07/02 职场文书
基于Go语言构建RESTful API服务
2021/07/25 Golang