jcrop java_[Java教程]Jcrop简单实用
[Java教程]Jcrop简单实用
0 2014-05-06 12:00:10
今天有一个项目的功能需求 “在上传照片的时候能进行裁剪”,网上找了下,发现有Jcrop这款插件,自己试了下,感觉很不错,蛮好用的。又能增加用户体验,测试了兼容性也很好,所以在这里分享下
首先,可以到官网上下载这款插件 htttp://www.jquery.com ,下载后有需要的话可以看下里面的demo
在项目中,只要在head中引用
前台页面,要加上4个隐藏域,分别记录剪切后的x,y坐标和长,宽。附上代码
![](gq_nav.jpg)
接着实例化Jcrop
之后看下运行效果图
好了,效果出来了,然后要保存截取后的图片了,这样在刚刚的脚本中可以看到用ajax提交到Handler.ashx上去处理,附上代码
public void ProcessRequest(HttpContext context) { //接收位置x,y。 //接收长宽w,h。 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("gq_nav.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); //输出保存的路径,以便页面端接收路径显示切割后的图片 }
在Handler.ashx中可以看到生成新的图片是交给ImageCut这个类去做的,这里也附上代码
public class ImageCut{ /// /// 剪裁 -- 用GDI+ /// ///原始Bitmap ///开始坐标X ///开始坐标Y ///宽度 ///高度 ///剪裁后的Bitmap 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; }}
这样就可以实现在线剪裁图片的效果了。因为觉得这款插件还算不错,所以特此分享下,希望大师们不要取笑,如果哪位有更好的建议或其他类似的插件,也希望
能分享给小弟。
另:附上这个插件的属性allowSelecttrue允许新选框
allowMovetrue允许选框移动
allowResizetrue允许选框缩放
trackDocumenttrue
baseClass“jcrop”基础样式名前缀。说明:class=”jcrop-holder”,更改的只是其中的 jcrop。
addClassnull添加样式。例:假设值为 “test”,那么会添加样式到
bgColor“black”背景颜色。颜色关键字、HEX、RGB 均可。
bgOpacity0.6背景透明度
bgFadefalse使用背景过渡效果
borderOpacity0.4选框边框透明度
handleOpacity0.5缩放按钮透明度
handleSize9缩放按钮大小
handleOffset5缩放按钮与边框的距离
aspectRatio0选框宽高比。说明:width/height
keySupporttrue支持键盘控制。按键列表:上下左右(移动)、Esc(取消)、Tab(跳出裁剪框,到下一个)
cornerHandlestrue允许边角缩放
sideHandlestrue允许四边缩放
drawBorderstrue绘制边框
dragEdgestrue允许拖动边框
fixedSupporttrue
touchSupportnull
boxWidth0画布宽度
boxHeight0画布高度
boundary2边界。说明:可以从边界开始拖动鼠标选择裁剪区域
fadeTime400过度效果的时间
animationDelay20动画延迟
swingSpeed3过渡速度
minSelect[0,0]选框最小选择尺寸。说明:若选框小于该尺寸,则自动取消选择
maxSize[0,0]选框最大尺寸
minSize[0,0]选框最小尺寸
onChangefunction(){}选框改变时的事件
onSelectfunction(){}选框选定时的事件
onReleasefunction(){}取消选框时的事件
API 接口
名称说明setImage(string)设定(或改变)图像。例:jcrop_api.setImage(“newpic.jpg”)
setOptions(object)设定(或改变)参数,格式与初始化设置参数一样
setSelect(array)创建选框,参数格式为:[x,y,x2,y2]
animateTo(array)用动画效果创建选框,参数格式为:[x,y,x2,y2]
release()取消选框
disable()禁用 Jcrop。说明:已有选框不会被清除。
enable()启用 Jcrop
destroy()移除 Jcrop
tellSelect()获取选框的值(实际尺寸)。例子:console.log(jcrop_api.tellSelect())
tellScaled()获取选框的值(界面尺寸)。例子:console.log(jcrop_api.tellScaled())
getBounds()获取图片实际尺寸,格式为:[w,h]
getWidgetSize()获取图片显示尺寸,格式为:[w,h]
getScaleFactor()获取图片缩放的比例,格式为:[w,h]
本文网址:http://www.shaoqun.com/a/90434.html
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。
0
jcrop java_[Java教程]Jcrop简单实用相关推荐
- PS入门教程:简单实用的PS快捷键教程1
今天带来一期超实用的PS快捷键教程.所谓的PS快捷键教程,就是为了在一定程度上提升日常工作中的绘图速度而定义的快捷方式.在工作中我们常看到同事不会去为了一个命令,在菜单和工具栏上寻寻觅觅,只是不停的敲 ...
- PS入门教程:简单实用的PS快捷键教程2
上篇内容从工具箱.文件操作.图层混合.选择功能.视图操作五方面入手分类总结了常用的PS快捷键教程.这篇内容小编再将从编辑操作.图像调整.加点按.取消操作这五方面为大家加码日常都可用到的PS快捷键教程. ...
- 百度地图 截图java_[Java教程]百度地图API 简单使用
[Java教程]百度地图API 简单使用 0 2015-08-24 19:00:12 最近项目上需要用到百度地图进行导航,参考百度地图API完成一个例子.API地址:http://developer. ...
- typescript 接口 java_[Java教程]【TypeScript】TypeScript 学习 2——接口
[Java教程][TypeScript]TypeScript 学习 2--接口 0 2015-06-19 12:00:28 在 TypeScript 中,接口是用作约束作用的,在编译成 JavaScr ...
- 遍历 in java_[Java教程]JavaScript中遍历数组 最好不要使用 for in 遍历
[Java教程]JavaScript中遍历数组 最好不要使用 for in 遍历 0 2017-01-14 00:01:52 先看一段代码1 2 3 4 5 Document 6 7 8 9 21 2 ...
- eval 函数 java_[Java教程]eval()函数用法详解
[Java教程]eval()函数用法详解 0 2015-12-14 11:00:26 eval()函数用法详解: 此函数可能使用的频率并不是太高,但是在某些情况下具有很大的作用,下面就介绍一下eval ...
- miniui datagrid java_[Java教程]MiniUI DataGrid获取当前行某列值
[Java教程]MiniUI DataGrid获取当前行某列值 0 2015-10-28 20:00:17 前言: 本文将给大家介绍一下, miniUI官网没有涉及到的内容:如何获取当前行某一列的值? ...
- 梦魇java_[Java教程]魔鬼的梦魇—验证IE中的JS内存泄露模式(一)
[Java教程]魔鬼的梦魇-验证IE中的JS内存泄露模式(一) 0 2012-05-08 07:00:04 随着移动互联网的发展,现在越来越多的应用开始想bs方向转移,原来很多复杂的计算逻辑也自然随着 ...
- jquery 图片裁剪 java_[Java教程]5 款最新的 jQuery 图片裁剪插件
[Java教程]5 款最新的 jQuery 图片裁剪插件 0 2015-05-18 16:00:20 这篇文章主要介绍最新的 5 款 jQuery 图片裁剪插件,可以帮助你轻松的实现你网站需要的图像裁 ...
最新文章
- 一文读懂如何通过设计模式学习创建对象?
- 关机时 ,提示其他用户登录到这台计算机,关闭WINDOWS会使他们丢失数据
- 智源研究院发布《2020北京人工智能发展报告》,剖析北京AI发展的17个中国“第一”...
- SAP MM 库存地点权限控制
- linux tomcat 隐藏版本号
- acos1.2的下载及CentOS7下安装nacos1.2
- 如何使用Notepad++格式化XML文件
- 用BenchmarkDotNet看Property
- 详解:JVM内存调优参数
- 3月份最热门 JS开源项目排行
- 315记者卧底销售公司成为二把手:待遇比原来高多了,差点不想回来
- 我是如何看穿候选人伪装的项目经验的?
- 线程池原理_Java线程池实现原理
- 荣耀magicbook15C语言,荣耀 MagicBook 15评测 聊聊目前性价比最高的大屏轻薄本
- 父级fixed_子元素使用position:fixed,导致他的宽度不能和父元素保持一致的解决方案...
- 系统时间与格林威治时间
- 解决VMware虚拟机字体模糊的办法
- h5微信本地调试 vue_UniApp本地调试H5(谷歌chrome浏览器)跨域问题的解决方法,亲测可用...
- 降低数据库压力的方法
- 《“ 追梦人” 的逐梦路:探寻大学生创客群体的发展之道》