JS简易图片裁剪-多点移动
最近天天都是加班,好不容易年前休息了,就抽点时间谢谢,自认为还是比较简单易懂的,没有用什么复杂牛叉的算法,因为我也会,呵呵。(没有对图片大小边界做判断,只对容器做了判断,请注意~ )
懒得详细说明了,先上前端代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <style type="text/css"> *{margin:0; padding:0;} #picDiv{width:703px; height:338px; background:#fff; border:1px solid #999; margin:100px auto; position:relative; overflow:hidden;} #picDiv ul{width:200px; height:200px; border:1px dashed #fff; cursor:move; list-style:none; position:relative; z-index:200;} #picDiv li{width:6px; height:6px; background:#fff; border:1px solid #333; margin:-4px 0 0 -4px; overflow:hidden; position:absolute; opacity:0.5; filter:alpha(opacity=50);} #picDiv li.tl{cursor:nw-resize; top:0%; left:0%;} #picDiv li.tc{cursor:n-resize; top:0%; left:50%;} #picDiv li.tr{cursor:ne-resize; top:0%; left:100%;} #picDiv li.ml{cursor:w-resize; top:50%; left:0%;} #picDiv li.mr{cursor:e-resize; top:50%; left:100%;} #picDiv li.fl{cursor:sw-resize; top:100%; left:0%;} #picDiv li.fc{cursor:s-resize; top:100%; left:50%;} #picDiv li.fr{cursor:se-resize; top:100%; left:100%;} </style> </head> <body> <div id="picDiv"> <ul> <li class="tl"></li> <li class="tc"></li> <li class="tr"></li> <li class="ml"></li> <li class="mr"></li> <li class="fl"></li> <li class="fc"></li> <li class="fr"></li> </ul> <img src="../images/2.jpg" style="position:absolute; top:0; left:0; opacity:0.3; filter:alpha(opacity=30); z-index:10;" /> <img src="../images/2.jpg" style="position:absolute; top:0; left:0; clip:rect(0 0 0 0); z-index:100;" /> </div> <form action="41.php" method="post"> <input type="submit" value=" 提 交 " /> <input type="hidden" id="imgInfor" name="imgInfor" /> </form> <script type="text/javascript"> (function(){ var div=document.getElementById('picDiv'), ul=div.getElementsByTagName('ul')[0], li=ul.getElementsByTagName('li'); divW=div.offsetWidth-2, divH=div.offsetHeight-2, see=function(){ var t=ul.offsetTop, l=ul.offsetLeft, r=l+ul.offsetWidth, f=t+ul.offsetHeight; div.getElementsByTagName('img')[1].style.clip='rect('+t+'px '+r+'px '+f+'px '+l+'px)'; document.getElementById('imgInfor').value="{'x':'"+l+"','y':'"+t+"','w':'"+ul.offsetWidth+"','h':'"+ul.offsetHeight+"','url':'"+div.getElementsByTagName('img')[1].src+"'}"; window.getSelection?window.getSelection().removeAllRanges():document.selection.empty(); }, clear=function(o){ if(!-[1,]){o.setCapture();}//学增加丢失焦点事件 document.onmouseup=function(){ if(!-[1,]){o.releaseCapture();} document.onmousemove=null; document.onmouseup=null; }; return false;//webkit中去掉默认事件,使鼠标不会变成默认文本光标 }; if(!-[1,]){ var cDiv=document.createElement('div'); cDiv.style.cssText='width:100%; height:100%; background:#fff; opacity:0; filter:alpha(opacity=0); font-size:0;'; ul.appendChild(cDiv); } ul.onmousedown=function(e){ e=e||window.event; var oldX=e.clientX-ul.offsetLeft, oldY=e.clientY-ul.offsetTop, maxW=divW-ul.offsetWidth, maxH=divH-ul.offsetHeight; document.onmousemove=function(e){ e=e||window.event; var newX=e.clientX-oldX,newY=e.clientY-oldY; newX=newX<0?0:newX>maxW?maxW:newX; newY=newY<0?0:newY>maxH?maxH:newY; ul.style.top=newY+'px'; ul.style.left=newX+'px'; see(); }; clear(this); }; for(var i in li){ li[i].onmousedown=function(e){ e=e||window.event; var oldX=e.clientX, oldY=e.clientY, oldT=ul.offsetTop+2, oldL=ul.offsetLeft+2, oldW=ul.offsetWidth, oldH=ul.offsetHeight, minW=50,minH=50, _method=this; if(e.stopPropagation){ e.stopPropagation(); }else{ e.cancelBubble=true; } document.onmousemove=function(e){ e=e||window.event; var lis={'w':'tr,mr,fr','h':'fl,fc,fr','l':'tl,ml,fl','t':'tl,tc,tr'}; if(lis.w.indexOf(_method.className)>-1){ var w=e.clientX-oldX+oldW; w=w<minW?minW:w>divW-oldL?divW-oldL:w; ul.style.width=w+'px'; } if(lis.h.indexOf(_method.className)>-1){ var h=e.clientY-oldY+oldH; h=h<minH?minH:h>divH-oldT?divH-oldT:h; ul.style.height=h+'px'; if(!-[1,]&&!window.XMLHttpRequest){cDiv.style.height=h+'px';}//ie6下高度不变bug } if(lis.l.indexOf(_method.className)>-1){ var l=e.clientX-oldX+oldL; l=l<0?0:l>oldW+oldL-minW?oldW+oldL-minW:l; ul.style.left=l+'px'; ul.style.width=oldW+oldL-l+'px'; } if(lis.t.indexOf(_method.className)>-1){ var t=e.clientY-oldY+oldT; t=t<0?0:t>oldH+oldT-minH?oldH+oldT-minH:t; ul.style.top=t+'px'; ul.style.height=oldH+oldT-t+'px'; if(!-[1,]&&!window.XMLHttpRequest){cDiv.style.height=oldH+oldT-t+'px';}//ie6下高度不变bug } see(); }; clear(this); }; } see(); })(); </script> </body> </html>
这里是php处理的代码,具体图片自己弄吧~哈哈~后期会出功能多一点的
<?php $img=json_decode(str_replace("\\'",'"',$_POST['imgInfor']),true); $old = imagecreatefromstring(file_get_contents($img['url'])); if(function_exists("imagecreatetruecolor")){ $new=imagecreatetruecolor($img['w'],$img['h']); // 创建目标图gd2 }else{ $new=imagecreate($img['w'],$img['h']); // 创建目标图gd1 } imagecopyresampled ($new,$old,0,0,$img['x'],$img['y'],$img['w'],$img['h'],$img['w'],$img['h']); imagejpeg($new,'img\\'.getip().'_'.time().'.jpg'); @header("Content-type: image/jpeg"); imagejpeg($new); imagedestroy($new); function getip(){ if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")){ $ip = getenv("HTTP_CLIENT_IP"); }else if(getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")){ $ip = getenv("HTTP_X_FORWARDED_FOR"); }else if(getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")){ $ip = getenv("REMOTE_ADDR"); }else if (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")){ $ip = $_SERVER['REMOTE_ADDR']; }else{ $ip = "unknown"; } return ($ip); } ?>

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

如何使用JS和百度地图实现地图平移功能百度地图是一款广泛使用的地图服务平台,在Web开发中经常用于展示地理信息、定位等功能。本文将介绍如何使用JS和百度地图API实现地图平移功能,并提供具体的代码示例。一、准备工作使用百度地图API前,首先需要在百度地图开放平台(http://lbsyun.baidu.com/)上申请一个开发者账号,并创建一个应用。创建完成

股票分析必备工具:学习PHP和JS绘制蜡烛图的步骤,需要具体代码示例随着互联网和科技的快速发展,股票交易已经成为许多投资者的重要途径之一。而股票分析是投资者决策的重要一环,其中蜡烛图被广泛应用于技术分析中。学习如何使用PHP和JS绘制蜡烛图将为投资者提供更多直观的信息,帮助他们更好地做出决策。蜡烛图是一种以蜡烛形状来展示股票价格的技术图表。它展示了股票价格的

人脸检测识别技术已经是一个比较成熟且应用广泛的技术。而目前最为广泛的互联网应用语言非JS莫属,在Web前端实现人脸检测识别相比后端的人脸识别有优势也有弱势。优势包括减少网络交互、实时识别,大大缩短了用户等待时间,提高了用户体验;弱势是:受到模型大小限制,其中准确率也有限。如何在web端使用js实现人脸检测呢?为了实现Web端人脸识别,需要熟悉相关的编程语言和技术,如JavaScript、HTML、CSS、WebRTC等。同时还需要掌握相关的计算机视觉和人工智能技术。值得注意的是,由于Web端的计

如何使用PHP和JS创建股票蜡烛图股票蜡烛图是股票市场中常见的一种技术分析图形,通过绘制股票的开盘价、收盘价、最高价和最低价等数据,帮助投资者更直观地了解股票的价格波动情况。本文将教你如何使用PHP和JS创建股票蜡烛图,并附上具体的代码示例。一、准备工作在开始之前,我们需要准备以下环境:1.一台运行PHP的服务器2.一个支持HTML5和Canvas的浏览器3

如何使用JS和百度地图实现地图热力图功能简介:随着互联网和移动设备的迅速发展,地图成为了一种普遍的应用场景。而热力图作为一种可视化的展示方式,能够帮助我们更直观地了解数据的分布情况。本文将介绍如何使用JS和百度地图API来实现地图热力图的功能,并提供具体的代码示例。准备工作:在开始之前,你需要准备以下事项:一个百度开发者账号,并创建一个应用,获取到相应的AP

如何使用JS和百度地图实现地图点击事件处理功能概述:在Web开发中,经常需要使用地图功能来展示地理位置和地理信息。而地图上的点击事件处理是地图功能中常用且重要的一部分。本文将介绍如何使用JS和百度地图API来实现地图的点击事件处理功能,并给出具体的代码示例。步骤:导入百度地图的API文件首先,要在HTML文件中导入百度地图API的文件,可以通过以下代码实现:

随着互联网金融的迅速发展,股票投资已经成为了越来越多人的选择。而在股票交易中,蜡烛图是一种常用的技术分析方法,它能够显示股票价格的变化趋势,帮助投资者做出更加精准的决策。本文将通过介绍PHP和JS的开发技巧,带领读者了解如何绘制股票蜡烛图,并提供具体的代码示例。一、了解股票蜡烛图在介绍如何绘制股票蜡烛图之前,我们首先需要了解一下什么是蜡烛图。蜡烛图是由日本人

如何使用JS和百度地图实现地图多边形绘制功能在现代网页开发中,地图应用已经成为常见的功能之一。而地图上绘制多边形,可以帮助我们将特定区域进行标记,方便用户进行查看和分析。本文将介绍如何使用JS和百度地图API实现地图多边形绘制功能,并提供具体的代码示例。首先,我们需要引入百度地图API。可以利用以下代码在HTML文件中导入百度地图API的JavaScript
