利用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的事件描述
Sep 08 Javascript
用js做一个小游戏平台 (一)
Dec 29 Javascript
jQuery 名称冲突的解决方法
Apr 08 Javascript
$.each与$().each的区别示例介绍
Mar 20 Javascript
js随机生成字母数字组合的字符串 随机动画数字
Sep 02 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
Jun 01 Javascript
JS实现一个简单的日历
Feb 22 Javascript
Javascript ES6中数据类型Symbol的使用详解
May 02 Javascript
vue组件发布到npm简单步骤
Nov 30 Javascript
p5.js入门教程之鼠标交互的示例
Mar 16 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
Sep 26 Javascript
javascript实现移动端触屏拖拽功能
Jul 29 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/02 国漫
PHP实现的增强性mhash函数
2015/05/27 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
2015/08/21 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
2018/05/31 PHP
PHP 计算两个时间段之间交集的天数示例
2019/10/24 PHP
一个网马的tips实现分析
2010/11/28 Javascript
JS清除IE浏览器缓存的方法
2013/07/26 Javascript
从js向Action传中文参数出现乱码问题的解决方法
2013/12/29 Javascript
详解JavaScript语法对{}处理的坑爹之处
2014/06/05 Javascript
jQuery表格插件datatables用法总结
2014/09/05 Javascript
14款经典网页图片和文字特效的jQuery插件-前端开发必备
2015/08/25 Javascript
jQuery轻松实现表格的隔行变色和点击行变色的实例代码
2016/05/09 Javascript
AngularJS应用开发思维之依赖注入3
2016/08/19 Javascript
详解从Node.js的child_process模块来学习父子进程之间的通信
2017/03/27 Javascript
AngularJs1.x自定义指令独立作用域的函数传入参数方法
2018/10/09 Javascript
webpack3升级到webpack4遇到问题总结
2019/09/30 Javascript
详解ES6 CLASS在微信小程序中的应用实例
2020/04/24 Javascript
通过滑动翻页效果实现和移动端click事件问题
2021/01/26 Javascript
[01:46]2020完美世界全国高校联赛秋季赛报名开启
2020/10/15 DOTA
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
利用python将图片转换成excel文档格式
2017/12/30 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
2019/06/12 Python
基于python代码批量处理图片resize
2020/06/04 Python
scrapy-splash简单使用详解
2021/02/21 Python
Android本地应用打开方法——通过html5写连接
2016/03/11 HTML / CSS
捷克领先的户外服装及配件市场零售商:ALPINE PRO
2018/01/09 全球购物
瑜伽国际:Yoga International
2018/04/18 全球购物
党员2014两会学习心得体会
2014/03/17 职场文书
文明班集体申报材料
2014/05/23 职场文书
普通员工辞职信范文
2015/05/12 职场文书
单位领导婚礼致辞
2015/07/28 职场文书
诚信教育主题班会
2015/08/13 职场文书
2015年美容师个人工作总结
2015/10/14 职场文书
小学三年级数学教学反思
2016/02/16 职场文书
python turtle绘图
2022/05/04 Python
Typescript类型系统FLOW静态检查基本规范
2022/05/25 Javascript