jquery上传头像裁剪插件
⑴ thinkphp3.1头像剪切上传怎么把jquery剪切好的图片上传保存到数据库
canvas
转成
base64位,然后得到图片的编码,然后上传到数据库
⑵ jsp页面实现图片预览,截取和上传
比较常用,而且简单易用的jquery-uploadify插件,支持带进度的多线程上传
用到的是flash的跨域上传模型,这里不用深究
基本文件大致包括
jquery-x.x.x.js
jquery.uploadify.x.js
uploadify.swf
uploadify.css
使用方式:
$(function(){
$("#fileId").uploadify({
width:42,
height:32,
swf:'js/uploadify.swf',
uploader:'upload.do;jsessionid=<%=session.getId()%>',
buttonImage:'image/movetophone_white.png',
fileSizeLimit:2048,
fileObjName:"imgFile",
method:'post',
removeCompleted:true,
fileTypeExts:"*.gif;*.jpg;*.png;*.jpeg;*.bmp",
onSelectError:function(file,errorCode,errorMsg){
alert("文件过大");
},
onUploadStart:function(file){
},
onUploadSuccess:function(file,data,response){
alert("上传完成");
},
onUploadError:function(file,errorCode,errorMsg){
alert(errorMsg);
}
});
});
<inputtype="file"id="fileId"/>
另,工程中需要引入commons-fileupload的包。
⑶ jquery jcrop插件怎么截屏
<div id="cutImage" style="display: none;">
<div class="bigImg" style="float: left;">
<img id="srcImg" src="" width="400px" height="270px"/>
</div>
<div id="preview_box" class="previewImg">
<img id="previewImg" src="" width="120px"/>
</div>
<div >
<form action="" method="post" id="crop_form">
<input type="hidden" id="bigImage" name="bigImage"/>
<input type="hidden" id="x" name="x" />
<input type="hidden" id="y" name="y" />
<input type="hidden" id="w" name="w" />
<input type="hidden" id="h" name="h" />
<P><input type="button" value="确认" id="crop_submit"/></P>
</form>
</div>
</div>
样式:大图、小图展示都需要固定高度、宽度,因为后台需要进行放大处理。即:<img width=""height=""/>
然后是使用jcrop了。在使用jcrop前我们需要下载jcrop:http://deepliquid.com/content/Jcrop.html。
将下载的压缩包解压后可以看到三个文件夹及一个index.html文件,/
css下放置的是Jcorp的样式文件,/demo下放置的是几个简单的例子(index.html中引用的链接就是放置在这个文件夹下),/js下放置的是Jcorp中最重要的脚本文件。我们只需要使用三个文件即可:jquery.Jcrop.css、jquery.Jcrop.js、JQuery.js
使用方法:
复制代码 代码如下:
//裁剪图像
function cutImage(){
$("#srcImg").Jcrop( {
aspectRatio : 1,
onChange : showCoords,
onSelect : showCoords,
minSize :[200,200]
});
//简单的事件处理程序,响应自onChange,onSelect事件,按照上面的Jcrop调用
function showCoords(obj) {
$("#x").val(obj.x);
$("#y").val(obj.y);
$("#w").val(obj.w);
$("#h").val(obj.h);
if (parseInt(obj.w) > 0) {
//计算预览区域图片缩放的比例,通过计算显示区域的宽度(与高度)与剪裁的宽度(与高度)之比得到
var rx = $("#preview_box").width() / obj.w;
var ry = $("#preview_box").height() / obj.h;
//通过比例值控制图片的样式与显示
$("#previewImg").css( {
width : Math.round(rx * $("#srcImg").width()) + "px", //预览图片宽度为计算比例值与原图片宽度的乘积
height : Math.round(rx * $("#srcImg").height()) + "px", //预览图片高度为计算比例值与原图片高度的乘积
marginLeft : "-" + Math.round(rx * obj.x) + "px",
marginTop : "-" + Math.round(ry * obj.y) + "px"
});
}
}
}
在使用jcrop前一定要先将$(“”).jcrop();进行预初始化,否则没有效果。
还有一种调用的方法,
复制代码 代码如下:
var api = $.Jcrop('#cropbox',{
onChange: showPreview,
onSelect: showPreview,
aspectRatio: 1
});
这种方法是将Jcrop生成的对象赋给一个全局变量,这样操作就会比较方便。
通过上面的js,就将X轴坐标、Y轴坐标、高度H、宽度W这个四个值传递给后台了,后台就只需要根据这四个值
进行放大处理,然后切割即可。
Action
复制代码 代码如下:
/**
* 裁剪头像
*/
public String cutImage(){
/*
* 获取参数
* x,y,w,h,bigImage
*/
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
int x = Integer.valueOf(request.getParameter("x"));
int y = Integer.valueOf(request.getParameter("y"));
int w = Integer.valueOf(request.getParameter("w"));
int h = Integer.valueOf(request.getParameter("h"));
String bigImage = request.getParameter("bigImage");
//获取文件真实路径
//获取文件名
String[] imageNameS = bigImage.split("/");
String imageName = imageNameS[imageNameS.length-1];
//文件正式路径
String imagePath = getSavePath()+"\\"+imageName;
//切割图片
ImageCut imageCut = new ImageCut();
imageCut.cutImage(imagePath, x, y, w, h);
//头像裁剪完成后,将图片路径保存到用户
UserBean userBean = (UserBean) request.getSession().getAttribute("userBean");
userBean.setUserPhoto(bigImage);
//保存头像
UserCenterService centerService = new UserCenterService();
centerService.updatePhoto(userBean);
//将修改后的用户保存到session中
request.getSession().setAttribute("userBean", userBean);
return "updatePhoto";
}
}
裁剪图片工具类:ImageCut.java
复制代码 代码如下:
public class ImageCut {
/**
* 图片切割
* @param imagePath 原图地址
* @param x 目标切片坐标 X轴起点
* @param y 目标切片坐标 Y轴起点
* @param w 目标切片 宽度
* @param h 目标切片 高度
*/
public void cutImage(String imagePath, int x ,int y ,int w,int h){
try {
Image img;
ImageFilter cropFilter;
// 读取源图像
BufferedImage bi = ImageIO.read(new File(imagePath));
int srcWidth = bi.getWidth(); // 源图宽度
int srcHeight = bi.getHeight(); // 源图高度
//若原图大小大于切片大小,则进行切割
if (srcWidth >= w && srcHeight >= h) {
Image image = bi.getScaledInstance(srcWidth, srcHeight,Image.SCALE_DEFAULT);
int x1 = x*srcWidth/400;
int y1 = y*srcHeight/270;
int w1 = w*srcWidth/400;
int h1 = h*srcHeight/270;
cropFilter = new CropImageFilter(x1, y1, w1, h1);
img = Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(image.getSource(), cropFilter));
BufferedImage tag = new BufferedImage(w1, h1,BufferedImage.TYPE_INT_RGB);
Graphics g = tag.getGraphics();
g.drawImage(img, 0, 0, null); // 绘制缩小后的图
g.dispose();
// 输出为文件
ImageIO.write(tag, "JPEG", new File(imagePath));
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
⑷ 求分享一个jquery的头像上传插件
把本人知道的几个插件推荐给你:
1、swfupload
2、uploadify
这两款插件都非常不错哈。
⑸ jQuery这样“$.自定义”,是个什么操作
lz上过sns网站或者论坛之类的吗,看上面的上传头像然后剪切大小,都是用flash来完成的。
如果用jquery的图片剪切插件,就可以不用flash 用js来完成。这种是复杂型的,虽然自己也能做但是要花时间,用现成的插件省去了不少写代码的时间。
基本上自定义插件都是省去写代码的时间而已,改下参数只能用。
我觉得用自定义插件就是解决时间问题,增加开发速度
⑹ 怎么实现asp.net上传图片并可以裁剪的功能,类似一些网站的头像截取 jQueryCropZoom插件 重重有赏啊!
jquery的插件,内部原理要懂jquery,只要会用就行
⑺ jquery jcrop 头像上传能放大缩小吗
一般的头像上传大小的缩放都是由后端处理的。
jquery jcrop
是用来做图片剪切的(但图片的剪切实际也是由后端处理的)jcrop只是提供了要剪切的坐标。
⑻ jQuery,croppic(用户截图后上传功能)的使用方法
它是前台剪切后,发回剪切的图片数据到后台,然后后台将该数据保存为图片,并生成一条引用链接给前台就行了。
⑼ jQuery图片裁剪插件哪位大神有啊要兼容ie9+的!
自行网络 jQuery Cropper
⑽ 如何在图片上传前用js(jquery)判断图片的尺寸
创建img标签:
IE浏览器直接src=图片本地路径,然后可以获取这个img的尺寸。
其他浏览器使用HTML5的FileReader获取文件资源转化为base64写入img的src,然后可以获取这个img尺寸。