`
pleasetojava
  • 浏览: 721093 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

有了jQuery.Jcrop,选取美女的哪个部位你说了算

 
阅读更多

亲们,真的不愿意相信你们是被标题吸引进来的,但事实让我不得不承认男人的本性。但是,请放心,我绝非标题党(我最痛恨那些浪费大家时间的标题党了),既然你有幸进来了,那我得想办法让你带着收获离开。轻轻地我走了,正如我轻轻地来,我要带走楼主留给我的一片云彩……

好吧,收起我的放荡不羁,让我们立马切入正题,正如标题上说的,今天我们要在ASP.NET中用jQuery.Jcrop插件实现图片的选取功能,你想选取美女的哪个部位你说了算,我就管不着了。

总的来说,原理很简单,大致流程是:在浏览器上加载原图 --> 用矩形框在原图上选取区域并将选取的顶点坐标和矩形尺寸发送至服务器 --> 服务器端用图片切割算法切割原图并输出切割后的图片。下面我们就分别对这几个步骤详细展开讨论分析,并在最后附上小demo供大家参考。

1、在页面上加载原图

这个就不用多说了,就是在页面上显示一张图片,一个img标签搞定,不过为了下一步演示,还是贴一下代码

<img src="girl.jpg" kesrc="girl.jpg" alt="" id="TestImage" style="float: left;">

2、用矩形框在原图上选取区域

这个我们要用到一个jQuery插件Jcrop,感谢Jcrop,其项目页面地址:http://deepliquid.com/content/Jcrop.html,再次感谢。接下来就是运用这个插件来让我们能在原图上随意地切图。先在页面上放几个隐藏域,用来存放当前选取的顶点坐标及选取矩形的尺寸,再放一个保存按钮,点击保存按钮后将在服务器上保存切割后的图片。代码如下:

<form id="AvatarForm" action="">
<input id="x" name="x" type="hidden">
<input id="y" name="y" type="hidden">
<input id="w" name="w" type="hidden">
<input id="h" name="h" type="hidden">
<input class="input_btn" id="BtnSaveAvatar" value="确定保存" type="submit">
</form>

四个隐藏域分别表示x:左上顶点x坐标;y:左上顶点y坐标;w:选取矩形宽度;h:选取矩形长度。
然后我们调用插件,做好初始化工作,引入js和css文件:

<script type="text/javascript" src="js/jquery.js" kesrc="js/jquery.js"></script>
<script type="text/javascript" src="js/Jcrop/js/jquery.Jcrop.js" kesrc="js/Jcrop/js/jquery.Jcrop.js"></script>
<link rel="stylesheet" href="js/Jcrop/css/jquery.Jcrop.css" kesrc="js/Jcrop/css/jquery.Jcrop.css" type="text/css">

初始化原图的js代码:

$(document).ready(function(){
$('#TestImage').Jcrop({
onChange: updateCoords,
onSelect: updateCoords
});
$("#BtnSaveAvatar").click(function(){
$.ajax({
url:'Handler.ashx',
data:{'x':$("#x").val(),'y':$("#y").val(),'w':$("#w").val(),'h':$("#h").val()},
datatype : "text/json",
type:'post',
success: function(o){ window.location.href="result.aspx?url="+o;} //成功后跳转到result页面查看切割后图片,把url
});
return false;
});
});
function updateCoords(c){
$('#x').val(c.x);
$('#y').val(c.y);
$('#w').val(c.w);
$('#h').val(c.h);
};

经过上述步骤,我们很高兴的看到一位美女出现在我们眼前,并任由我们选取任何部位,很刺激吧,由于demo在最后,先在这截一张效果图吧

3、服务器端切割图片并输出切割后的图片:

切割图片的主要类代码如下:

public class ImageCut
{
///<summary>
/// 剪裁 -- 用GDI+
///</summary>
///<param name="b">原始Bitmap</param>
///<param name="StartX">开始坐标X</param>
///<param name="StartY">开始坐标Y</param>
///<param name="iWidth">宽度</param>
///<param name="iHeight">高度</param>
///<returns>剪裁后的Bitmap</returns>
public Bitmap KiCut(Bitmap b)
{
if (b == null)
{
return null;
}

int w = b.Width;
int h = b.Height;

if (X >= w || Y >= h)
{
return null;
}

if (X + Width > w)
{
Width = w - X;
}

if (Y + Height > h)
{
Height = h - Y;
}

try
{
Bitmap bmpOut = new Bitmap(Width, Height, PixelFormat.Format24bppRgb);

Graphics g = Graphics.FromImage(bmpOut);
g.DrawImage(b, new Rectangle(0, 0, Width, Height), new Rectangle(X, Y, Width, Height), GraphicsUnit.Pixel);
g.Dispose();

return bmpOut;
}
catch
{
return null;
}
}

public int X = 0;
public int Y = 0;
public int Width = 120;
public int Height = 120;
public ImageCut(int x, int y, int width, int heigth)
{
X = x;
Y = y;
Width = width;
Height = heigth;
}
}

在Handler.ashx中,接收页面传递过来的切割图片的顶点坐标以及长宽尺寸,并调用C#图像切割类实现图片切割:

public void ProcessRequest (HttpContext context) {
string xstr = context.Request["x"];
string ystr = context.Request["y"];
string wstr = context.Request["w"];
string hstr = context.Request["h"];
string sourceFile = context.Server.MapPath("girl.jpg");
string savePath = "CutImage/" + Guid.NewGuid() + ".jpg";
int x = 0;
int y = 0;
int w = 1;
int h = 1;
try
{
x = int.Parse(xstr);
y = int.Parse(ystr);
w = int.Parse(wstr);
h = int.Parse(hstr);
}
catch { }

ImageCut ic = new ImageCut(x, y, w, h);
System.Drawing.Bitmap cuted = ic.KiCut(new System.Drawing.Bitmap(sourceFile));
string cutPath = context.Server.MapPath(savePath);
cuted.Save(cutPath, System.Drawing.Imaging.ImageFormat.Jpeg);
context.Response.Write(savePath); //输出保存的路径,以便页面端接收路径显示切割后的图片
}

最后我们在Result.aspx页面上接收切割后的图片路径并显示切割后的图片:

<img src="<%=Request["url"] %>" alt="" />
1
2
分享到:
评论
3 楼 gu_sofia 2011-11-21  
不错 呵呵
2 楼 troyconder 2011-11-21  
大骗纸 
1 楼 rain_liang 2011-11-21  
这个插件比较好用

相关推荐

    jquery.jcrop.min.js

    jquery.jcrop.min.js 不错的剪裁哟

    jQuery.Jcrop.min.js+PHP进行图片裁剪

    jQuery.Jcrop.min.js是Jcrop库的轻量级版本,适用于性能优化和简化代码。它提供了丰富的API,可以轻松地与后端服务器进行交互,将用户选定的裁剪参数发送到服务器。 PHP是一种流行的服务器端脚本语言,常用于处理...

    好用的JS图片裁剪工具——jquery.Jcrop-0.9.8 (官方修正版)

    **jQuery Jcrop是一款非常实用的JavaScript图片裁剪工具,它为网页开发人员提供了一种简单易用的方法来实现用户交互式的图像裁剪功能。在网页上,用户可以自由选择图片的裁剪区域,从而实现自定义尺寸的图片生成。**...

    jquery.Jcrop.js(setImage方法支持自定义图片尺寸)

    此文件是Jcrop.js的修改版,主要增加了setImage方法入参,可以传入图片宽高自定义图片大小,调用方式:jcrop_api.setImage('图片URL',480,270);

    jquery.jCrop.js开发版

    jquery jCrop开发版js,通过jquery实现图片裁剪

    jquery.Jcrop.js

    js操作图片,并且更具要求截取指定的图片大小。

    好用的JS图片裁剪工具——jquery.Jcrop-0.9.8

    Jcrop的主文件名为`Jcrop.js`,样式文件通常为`jcrop.css`。确保它们被正确地链接到页面,以便在需要裁剪的图像元素上应用Jcrop插件。 ```html &lt;script src="jquery.js"&gt; &lt;script src="Jcrop.js"&gt; ...

    jquery.Jcrop

    &lt;link rel="stylesheet" href="css/jquery.Jcrop.min.css"&gt; $(document).ready(function(){ $('#target').Jcrop({ onSelect: function(cords) { console.log('Selected:', cords); } }); }); ``` 以上代码...

    jQuery图片裁剪插件Jcrop.js.zip

    &lt;... &lt;head&gt; &lt;meta charset="utf-8" /&gt;...jQuery图片裁剪插件Jcrop.js&lt;... Jcrop.js实现的一款功能强大的jQuery图片裁剪插件,可以结合后端程序快速的实现图像裁剪的功能,右侧有3个图像缩略图尺寸可选。

    jQuery图片裁剪插件Jcrop.js

    **jQuery图片裁剪插件Jcrop.js** Jcrop.js是一款基于jQuery的开源图片裁剪工具,它为网页开发者提供了一种高效、灵活的方式来实现图像裁剪功能。在网页设计中,用户经常需要上传图片并根据需求进行裁剪,以适应特定...

    基于jquery.Jcrop的头像编辑器

    用过新浪微博的朋友对它的头像编辑器都有印象吧.... 官方网址:http://deepliquid.com/content/Jcrop.html 上面有很多demo,有兴趣的可以上去看看. 此文章中,封装的JS如下: 代码如下: jQuery.UtrialAvatarCutter

    jQuery Jcrop 实现图像裁剪实例

    在本文中,我们将深入探讨如何使用jQuery Jcrop插件实现图像裁剪功能。Jcrop是一款强大的JavaScript库,它为Web应用程序提供了用户友好的图像选择和裁剪工具。这个实例将帮助开发者理解Jcrop的工作原理,并指导如何...

    jquery-Jcrop实现图片裁剪截图上传和保存

    `jQuery Jcrop`是一个流行的JavaScript库,它允许用户在浏览器端进行图像选择、裁剪和截图操作,进而实现上传到服务器并保存。这个库是基于jQuery构建的,因此可以方便地与现有的jQuery应用集成,提供了丰富的API和...

    Jcrop-0.9.12.zip

    10. **自定义样式**:通过修改 "jquery.Jcrop.css" 或者在你的项目 CSS 中覆盖默认样式,可以调整 Jcrop 的外观。 掌握这些知识点,你就能有效地利用 Jcrop 实现网页上的图像裁剪功能,提供用户友好的交互体验。在...

    图片裁剪插件JqueryJcrop兼容大数浏览器

    &lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery.Jcrop/0.9.12/jquery.Jcrop.min.css"&gt; ``` - **本地安装**:从官方网站(http://jcrop.github.io/)下载最新版本的 Jcrop 文件,将...

    jQuery图像裁剪插件Jcrop.js

    **jQuery图像裁剪插件Jcrop.js详解** 在网页开发中,经常需要处理用户上传的图片,例如调整尺寸、裁剪或添加滤镜等。此时,JavaScript库如jQuery的插件就显得尤为重要,其中Jcrop.js就是一款强大的图像裁剪工具,它...

    jQuery Jcrop 实现图像裁剪Demo

    &lt;link rel="stylesheet" href="path/to/jquery.Jcrop.min.css" /&gt; &lt;script src="path/to/jquery.min.js"&gt; &lt;script src="path/to/jquery.Jcrop.min.js"&gt; ``` 接下来,你需要选择一个图像元素,并调用Jcrop的`.Jcrop...

    jquery.Jcrop结合JAVA后台实现图片裁剪上传实例

    首先,页面需要引入必要的库文件,如jquery.min.js、jquery.Jcrop.js和jquery-form.js。然后通过一个表单来提交图片,并使用一个id为"target"的div来显示上传后的图片。此外,还定义了一个"preview-pane"类,用于...

    PHP+jQuery+jCrop裁剪头像

    3. **jCrop**:jCrop是jQuery的一个插件,用于实现图像的选取和裁剪功能。它提供了一种直观的用户界面,允许用户通过拖动选择图像的一部分,然后将这些裁剪参数发送到服务器进行实际的裁剪操作。jCrop支持响应式设计...

Global site tag (gtag.js) - Google Analytics