图片切割插件分步实现(一)

该插件是在窗口拖动效果的基础上实现的

回头再写详细点,时间比较急。先贴上代码

插件源码如下

<!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" />
<meta name="renderer" content="webkit"/>
<meta http-equiv="X-UA-Compatible" content="IE=8" /> 
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>登录</title>
</head>
<style>
body{
	background-color:#DCDCDC;

}
.container{
	position:absolute;
	height:400px;
	width:300px;
	border:1px solid black;
	border-radius:3px;
	background:url("http://oospace.sinaapp.com/img/cut.jpg") no-repeat;
	background-color:black;
	opacity:0.2;
	filter:alpha(opacity=20);
	top:100px;
	left:100px
}
.imgLayer{
	position:absolute;
	background:url("http://oospace.sinaapp.com/img/cut.jpg") no-repeat;
	height:400px;
	width:300px;
	clip:rect(20px  280px 300px 30px);
	top:100px;
	left:100px

}
.controlLayer{
	position:absolute;
	height:280px;
	width:250px;
	zoom:1;
	border:1px dashed #DCDCDC;
	top:120px;
	left:130px;
	/*cursor:move;*/
}
.mark{
border:1px solid #000000;
	background-color:#ffffff;
	opacity:0.8;
	filter:alpha(opacity=80);
	padding:2px;
	height:3px;
	width:3px;
}
.leftTop{
	position:absolute;
	top:-3px;
	left:-3px;
	cursor: se-resize;
}
.leftCenter{
	position:absolute;
	top:50%;
	left:-3px;
	cursor: w-resize;
}
.topCenter{
	position:absolute;
	top:-3px;
	left:50%;
	cursor: ns-resize;
}
.rightTop{
	position:absolute;
	top:-3px;
	right:-3px;
	cursor: ne-resize;
}
.rightCenter{
	position:absolute;
	top:50%;
	right:-3px;
	cursor: e-resize;
}
.leftBottom{
	position:absolute;
	bottom:-3px;
	left:-3px;
	cursor: ne-resize;
}
.bottomCenter{
	position:absolute;
	bottom:-3px;
	left:50%;
	cursor: s-resize;
}
.rightBottom{
	position:absolute;
	bottom:-3px;
	right:-3px;
	cursor: se-resize;
}
</style>
<body>
    <div class="container">
	</div>

		<div  class="imgLayer">
		</div>

	<div class="controlLayer">
		<div class="leftTop  mark"></div>
		<div class="topCenter mark"></div>
		<div class="rightTop mark"></div>
		<div class="leftCenter mark"></div>
		<div class="rightCenter mark"></div>
		<div class="leftBottom mark"></div>
		<div class="bottomCenter mark"></div>
		<div class="rightBottom mark"></div>
	</div>
</body>
<script  type="text/javascript" src="jquery-1.10.2.min.js"></script>
<script>
//拖动效果代码
//var _z=9999;
$(document).ready(function(){
 var _move=false;//移动标记
 var _x,_y;//鼠标离控件左上角的相对位置
 var wd;//窗口
 var img=$(".imgLayer");//图片
 var ctain=$(".container");
    $(".controlLayer").click(function(){
        //alert("click");//点击(松开后触发)
     this.style.cursor = "default";//鼠标形状
     //this.style.zIndex = 999;
        }).mousedown(function(e){
        _move=true;
        wd=$(this);
        this.style.cursor = "move";//鼠标形状
        //this.style.zIndex = _z;//窗口层次
        //_z++;
        _x=e.pageX-parseInt(wd.css("left"));
        _y=e.pageY-parseInt(wd.css("top"));
		//_ximg=e.pageX-parseInt(img.css("left"));
		//_yimg=e.pageX-parseInt(img.css("top"));
       /*  wd.fadeTo(20, 0.25); *///点击后开始拖动并透明显示
        $(document).mousemove(function(e){
            if(_move){
                var x=e.pageX-_x;//移动时根据鼠标位置计算控件左上角的绝对位置
                var y=e.pageY-_y;

				//设置controlLayer的范围
				var w_ctn=parseInt(ctain.css("width"));
				var h_ctn=parseInt(ctain.css("height"));
				var l_ctn=parseInt(ctain.css("left"));
				var t_ctn=parseInt(ctain.css("top"));
				var  w_wd=parseInt(wd.css("width"));
				var  h_wd=parseInt(wd.css("height"));

				//设置imgLayer的范围
				var top=y-t_ctn+"px";
				var right=parseInt(wd.css("width"))+x-l_ctn+"px";
				var bottom=parseInt(wd.css("height"))+y-t_ctn+"px";
				var left=x-l_ctn+"px";
				var rect="rect( "+top+" "+right+" "+bottom+" "+left+" )";

				//根据container控制移动范围
				if(w_ctn>=(x+w_wd-l_ctn)&&h_ctn>=(y+h_wd-t_ctn)&&(y>=t_ctn)&&(x>=l_ctn)){
					wd.css({top:y,left:x});//控件新位置
					img.css("clip",rect);//切割位置
					//img.css({top:ctain.css("top"),left:ctain.css("left")});//切割显示图片新位置
				}

				//var ximg=e.pageX-_ximg;//移动时根据鼠标位置计算控件左上角的绝对位置
				//var yimg=e.pageY-_yimg;
				//img.css({top:yimg,left:ximg});//图片新位置

            }
        }).mouseup(function(){
        _move=false;
        /* wd.fadeTo("fast", 1); *///松开鼠标后停止移动并恢复成不透明
      });
    });
    
});
</script>
</html>

效果:http://oospace.sinaapp.com/cut.php

时间: 2024-12-26 15:29:55

图片切割插件分步实现(一)的相关文章

图片切割插件分步实现(二)

相对于上一个版本, 1,这次修复了container位置在左上角的bug, 2,容器container大小改为图片本身大小, 3,控制层controlLayer以及切割显示层imgLayer改为通过js初始化(方便以后添加调整) 4,容器container位置也可以随意调整而不影响其它功能 效果:http://oospace.sinaapp.com/cut1.php 代码:  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional

jQZoom图片放大器插件。API说明文档,jQZoom使用说明

jQZoom是一个基于最流行的jQuery的图片放大器插件.它功能强大,使用简便.支持标准模式.反转模式.无镜头.无标题的放大,并可以自定义jQZoom的窗口位置和渐隐效果,修正IE6的select bug.使用之前,先引入jQZoom.js. zoomType,默认值:’standard’,另一个值是’reverse’,是否将原图用半透明图层遮盖. zoomWidth,默认值:200,放大窗口的宽度. zoomHeight,默认值:200,放大窗口的高度. xOffset,默认值:10,放大窗

jQuery图片切换插件jquery.cycle.js

Cycle是一个很棒的jQuery图片切换插件,提供了很好的功能来帮助大家更简单的使用插件的幻灯功能 下载cycle插件并引入,此时,注意把引入它的代码放在引入jQuery主文件之后. <head> <script type="text/javascript" src="js/jquery-1.8.0.min.js"></script> <script type="text/javascript" src

推荐一款手机端的图片滑动插件iSlider

首先先放出中文官方地址   http://be-fe.github.io/iSlider/index.html 这是demo 众所周知,移动端的图片滑动插件有很多,为什么我要推荐这个iSlider呢? 这个插件吸引我的有两点, 一是它不依赖与jquery,采用原生代码书写.二是它使用起来非常容易,而且除了图片,还支持普通的dom元素,滑动方式多样,效果丰富. 但是它也有些缺点,其一就是它提供的接口太少了. 在为轮播图片提供一些功能按钮时,比如说,上一张.下一张.自动播放等.使用这个插件就有些力不

十个jQuery图片画廊插件推荐

jQuery的画廊插件可以将分组图像和多媒体资料转成类似Flash的图像或照片.当幻灯片已经成为网站的重要组成部分,jQuery的重要性不能被忽视.下面为你介绍了10个最有美感,创新性和创造性的jQuery图片画廊插件: 1.How to Create a Simple Slideshow using Mootools / JQuery 当我们想要在有限的屏幕空间展示很多内容,这要使用到幻灯片.幻灯片是最佳的可以展现大量的信息的方式.在这篇文章中我将展示使用MooTools / Jquery做出

Html5添加制作全屏响应式效果的图片画廊插件教程

一.安装 npm install jquery-gallerybox 二.使用方法 <link rel="stylesheet" type="text/css" href="css/gallerybox.css">               <script src="js/jquery.min.js"></script> <script src="js/jquery.gal

jquery 图片处理插件

JQuery Jcrop 实现图片裁剪的插件 the jQuery Image Cropping Plugin jquery 图片处理插件,布布扣,bubuko.com

5 款非常酷的 jQuery 图片裁剪插件

这篇文章主要介绍最新的 5 款 jQuery 图片裁剪插件,可以帮助你轻松的实现你网站需要的图像裁剪功能. Cropit Cropit 是一个 jQuery 插件,支持图像裁剪和缩放功能.Cropit 通过 FileReader 进行本地图片加载,然后使用 canvas 来进行裁剪. croppic croppic 是图像裁剪的 jQuery 插件,可以满足你的要求,并且有许多额外的特性. Image Cropper jQuery Image Cropper 是简单的 jQuery 图像裁剪插件

C#中图片切割,图片压缩,缩略图生成的代码

**//// <summary> /// 图片切割函数 /// </summary> /// <param name="sourceFile">原始图片文件</param> /// <param name="xNum">在X轴上的切割数量</param> /// <param name="yNum">在Y轴上的切割数量</param> /// <