利用jquery的imgAreaSelect插件实现图片裁剪示例

利用jquery的imgAreaSelect插件实现图片裁剪示例

将用户上传的图片进行裁剪再保存是现在web2.0应用中常常处理的工作,现在借助jquery的imgareaselect插件再配合PHP的GD库就可以轻松的实现这个在以前来说非常棘手的功能。我们来看看它的实现步骤:

1、包含进CSS文件(imgareaselect-default.css)和 jquery.imgareaselect.js文件

2、html代码(要裁剪的图片元素)

<img id="selectbanner" src="/pic/banner.jpg" />

3、imgAreaSelect的数据操作

$(‘#selectbanner‘).imgAreaSelect({ selectionColor: ‘blue‘, x1:0, y1:0, x2: 950,
maxWidth:950,minWidth:950,y2:400,minHeight:400,maxHeight:400,
selectionOpacity: 0.2 , onSelectEnd: preview });

这样即可在该图片元素中使用裁剪功能了,当选框确定之后我们要保存被选择的图片还得自己写代码来操作。下面是当确定好图片区域后点击一个裁剪按钮后的操作:

//裁剪确认操作
$("#sliceButton").click(function() {var pic = $(‘#selectbanner‘).attr(‘src‘);  
 var x,y,w,h;
 $.post(
  "/template/sliceBanner",
  {
   x:$(‘#selectbanner‘).data(‘x‘),
   y:$(‘#selectbanner‘).data(‘y‘),
   w:$(‘#selectbanner‘).data(‘w‘),
   h:$(‘#selectbanner‘).data(‘h‘),
   pic:pic
  },
  function(data){
   //把裁剪后图片加载到原处
   if(data){
    $(‘#selectbanner‘).attr(pic);
   }
  }
 );});
//设置选取框的选取信息

//利用jquery中的data方法来保存生成的数据

function preview(img, selection) {
 $(‘#selectbanner‘).data(‘x‘,selection.x1);
 $(‘#selectbanner‘).data(‘y‘,selection.y1);
 $(‘#selectbanner‘).data(‘w‘,selection.width);
 $(‘#selectbanner‘).data(‘h‘,selection.height);

}

4、PHP端的主要代码:

//利用GD库来作裁剪操作

function sliceBanner(){
 $x = (int)$_POST[‘x‘];
 $y = (int)$_POST[‘y‘];
 $w = (int)$_POST[‘w‘];
 $h = (int)$_POST[‘h‘];
 $filename = trim($_POST[‘pic‘]);
 if(isset($filename) ){
  $uploadBanner =  ‘/temp‘. $filename;
  $sliceBanner = ‘upload/‘. $filename;
  $src_pic = getImageHander($uploadBanner);
  if(!$src_pic){
   echo 0;exit;
  }
  $dst_pic = imagecreatetruecolor($w, $h);
  imagecopyresampled($dst_pic, $src_pic, 0, 0, $x, $y, $w, $h, $w, $h);
  imagejpeg($dst_pic, $sliceBanner);
  imagedestroy($src_pic);
  imagedestroy($dst_pic);
  echo 1;exit;
 }
 echo 0 ;exit;}
function getImageHander ($url) {
 $size=@getimagesize($url);
 switch($size[‘mime‘]){
  case ‘image/jpeg‘: $im = imagecreatefromjpeg($url);break;
  case ‘image/gif‘ : $im = imagecreatefromgif($url);break;
  case ‘image/png‘ : $im = imagecreatefrompng($url);break;
  default: $im=false;break;
 }
 return $im;}

1、介绍

ImgAreaSelect是一jQuery插件,它支持用户通过鼠标拖曳选择图片的一部分,非常的fashion。另外,可以在这个选择图像区域的基础上应用网站的其他一些技术,比如图片拖曳、图片编辑等。

2、基本用法

这个插件基于jQuery上通过imgAreaSelect()方法来调用,它操作的对象是HTML中元素内的图像。

复制代码 代码如下:

如果在jQuery对象里有不止有一个img元素,那么这个插件会对里面的元素逐个应用此方法。其实这个方法不仅仅应用于img元素,它支持任何块级元素(比如有图像背景的div元素)。

与其它jQuery插件相似,这个插件可以在$(document).ready() 或者
$(window).load()句柄中初始化。 
3、选项

用户在这个插件的很多方面都可以进行定制,用户通过插件选项来达到这个目的(这些选项会在插件初始化的时候起效)。这些选项包括:



选项



描述



aspectRatio


长宽比,以后在选择时候就会维持不变。

e.g. "4:3"



autoHide


如果设为true,那么在选择完后区域会消失。

Default:false



classPrefix


预先给插件元素的前缀(详见下面:5、元素与类)

Default:imgareaselect



disable


如果设置成true,这个插件将不起作用(但是图像还是可见的)



enable


如果设置成true,这个插件又将重新起作用



fadeSpeed


若设置成大于零的某个数,将"渐隐/渐现"这个插件

Default:true



handles


若设置成true,在改变大小的时候显示改变框(就是角点有些小"矩形")

Default:false



hide


若设置成true,则隐藏选择框



imageHeight


图像的真实高度(因为有可能被CSS缩放过了)



imageWidth


图像的真实宽度(因为有可能被CSS绽放过了)



instance


若设为true,imgAreaSelect()函数会返回一个对选择区域图像的一个引用,以便能够进一步使用API。(详见8、API方法)



keys


启用/关闭键盘支持(详见7、键盘支持)

Default:false



maxHeight


限制选择框(以像素为单位),设置最大、最小的高度、宽度。



maxWidth



minHeight



minWidth



movable


设置是否支持选择框移动

Default:true



parent


指定此插件默认所附加到的父元素

Default:body



persistent


若设置成true,点击选择区域外将开始一个新的选项(换言之,是否让用户只能移动/缩放选择区域)

Default:false



remove


若设置成true,则该插件将完全移除



resizable


决定选择区域是否可以改变大小

Default:true



resizeMargin


当选择区域宽度超过多少像素时将启用"可改变大小"模式



show


如果设置成true,选择区域将可见



x1


y1


初始化时选择框左上角的坐标



x2


y2


初始化时选择框右下角的坐标



zIndex


设置此插件所作用元素的z-index的值,一般情况下,imgAreaSelect
总是可以自动计算出它的值,但是极少数情况下还是有必要设置的。



onInit


当插件初始化时所调用的函数(详见6、回调函数)



onSelectStart


当开始选择时所调用的函数(详见6、回调函数)



onSelectChange


当改变选择区域时所调用的函数(详见6、回调函数)



onSelectEnd


当选择结束时所调用的函数(详见6、回调函数)

4、样式表

然后在初始化imgAreaSelect时,使用onSelectEnd()回调函数将选择后的数据赋给这些隐藏域,正如下面代码那样:

$(document).ready(function () {

$(‘#ladybug‘).imgAreaSelect({

onSelectEnd: function (img, selection) {

$(‘input[name="x1"]‘).val(selection.x1);

$(‘input[name="y1"]‘).val(selection.y1);

$(‘input[name="x2"]‘).val(selection.x2);

$(‘input[name="y2"]‘).val(selection.y2);

}

});

});

这样当点击"submit按钮"时,页面将上载到服务器,如果使用PHP的话,使用$_POST[‘x1‘]等就得到相应的坐标数据了

来源:http://blog.sina.com.cn/s/blog_70a3539f01018jdl.html

时间: 2024-10-11 17:56:07

利用jquery的imgAreaSelect插件实现图片裁剪示例的相关文章

基于jQuery功能非常强大的图片裁剪插件

今天我们要来介绍一款基于jQuery功能非常强大的图片裁剪插件,这款jQuery图片裁剪插件可以选择裁剪框的尺寸比例,可以设置高宽尺寸,同时可以设置图片翻转角度,当然也支持图片的缩放,裁剪框也可以用鼠标拖动.效果图如下: 在线预览   源码下载 来看看实现的代码,这里我们主要来看JavaScript代码 获取图片的Canvas画布: function getSourceCanvas(image, data) { var canvas = $('<canvas>')[0], context =

基于MVC+EasyUI的Web开发框架经验总结(1)-利用jQuery Tags Input 插件显示选择记录

最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重构完善过程中,很多细节花费不少时间进行研究和提炼,一步步走过来,也积累了不少经验,本系列将主要介绍我在进一步完善我的Web框架基础上积累的经验进行分享,本随笔主要介绍利用jQuery Tags Input 插件显示选择记录. 我在利用jQuery Tags Input 插件之前,一直想找一个合适的J

利用jquery移除和添加图片

利用jquery移除和添加图片 1.样式 <style type="text/css">     .changeImage{          background:url(images/right.png) no-repeat center;     } </style> 2.JS (1)在改变标签的样式,需要移除之前添加的样式 $("#tab tr").find("td").removeClass("chan

基于MVC4+EasyUI的Web开发框架经验总结(1)-利用jQuery Tags Input 插件显示选择记录

最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重构完善过程中,很多细节花费不少时间进行研究和提炼,一步步走过来,也积累了不少经验,本系列将主要介绍我在进一步完善我的Web框架基础上积累的经验进行分享,本随笔主要介绍利用jQuery Tags Input 插件显示选择记录. 我在利用jQuery Tags Input 插件之前,一直想找一个合适的J

jquery roundabout幻灯片插件3d图片切换支持图片旋转切换滚动

<!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-

imgAreaSelect插件

利用jquery的imgAreaSelect插件实现图片裁剪示例 将用户上传的图片进行裁剪再保存是现在web2.0应用中常常处理的工作,现在借助jquery的imgareaselect插件再配合PHP的GD库就可以轻松的实现这个在以前来说非常棘手的功能.我们来看看它的实现步骤: 1.包含进CSS文件(imgareaselect-default.css)和 jquery.imgareaselect.js文件 2.html代码(要裁剪的图片元素) <img id="selectbanner&q

采用jquery的imgAreaSelect样品图像裁剪示范插件实现

将用户上传的图片进行裁剪再保存是如今web2.0应用中经常处理的工作,如今借助jquery的imgareaselect插件再配合PHP的GD库就能够轻松的实现这个在曾经来说很棘手的功能. 我们来看看它的实现步骤: 1.包括进CSS文件(imgareaselect-default.css)和 jquery.imgareaselect.js文件 2.html代码(要裁剪的图片元素) <img id="selectbanner" src="/pic/banner.jpg&qu

使用imgareaselect 辅助后台进行图片裁剪

由于项目其中用到图片裁剪,本来能够不用到后台进行裁剪的,可是要兼容万恶的IE浏览器,所以不得不使用后台进行裁剪. 这次使用到imgareaselect?插件获取须要裁剪区域的坐标.再由后台进行裁剪操作. 先上个效果图再说 可是这里有一个坑就是上传的图片过大,可能会造成裁剪的区域跟插件中显示的不一样,所以得如今后台对云图片进行压缩在裁剪 /** * 等比例压缩算法: * 算法思想:依据压缩基数和压缩比来压缩原图,生产一张图片效果最接近原图的缩略图 * @param srcURL 原图地址 * @p

浮士德html5图片裁剪器2016开源版

前言 最近刚刚好整理浮士德头像裁剪的flash版本,为了某些低级浏览器的兼容着想,既然已经做好了flash版本了,那么,现代浏览器的html5版本和ipad版,移动版也要做一些处理和打包. 兼容性 兼容ie10及以上,google浏览器,Firefox浏览器,safari浏览器,兼容ipad,苹果,安卓等机型. 历史文档 话说图片裁剪这个是很常见的需求,但是做到精细化和兼容处理也是相当费工夫的,本人光是博客相关文件都有7.8篇了,解决的大大小小bug不计其数,本插件不但解决了下面的各种bug,而