php+jquery+Jcrop实现上传-截取-保存图片功能
来源:互联网 发布:下载adobe reader软件 编辑:程序博客网 时间:2024/04/29 03:40
现在很我网站都流行会员模块上传头像时添加在线截取图片功能,截取完之后再保存,最近也有很多网友问有没有这个功能啊,网站上有一款只实现前端截取图片功能的,至于保存的话就没实现,具体可以查看实现图片截取+预览功能的jquery插件(http://www.jq-school.com/Detail.aspx?id=45),现在分享用php+jquery+Jcrop实现上传-截取-保存图片功能的,文章后面可以打包下载,学习PHP的网友们可以参考哦。
前端代码如下:
$(document).ready(function(){var bar = $('.bar');var percent = $('.percent');var showimg = $('#showimg');var progress = $(".progress");var files = $(".files");var btn = $(".btn span");$("#fileupload").wrap("<form id='myupload' action='action.php' method='post' enctype='multipart/form-data'></form>");$("#fileupload").change(function(){ //选择文件$("#myupload").ajaxSubmit({dataType: 'json',//数据格式为json beforeSend: function() {//开始上传 showimg.empty();//清空显示的图片progress.show();//显示进度条var percentVal = '0%';//开始进度为0%bar.width(percentVal);//进度条的宽度percent.html(percentVal);//显示进度为0% btn.html("上传中...");//上传按钮显示上传中},uploadProgress: function(event, position, total, percentComplete) {var percentVal = percentComplete + '%';//获得进度bar.width(percentVal);//上传进度条宽度变宽percent.html(percentVal);//显示上传进度百分比},success: function(data) {//成功//获得后台返回的json数据,显示文件名,大小,以及删除按钮files.html("<b>"+data.name+"("+data.size+"k)</b> <span class='delimg' rel='"+data.pic+"'>删除</span>");//显示上传后的图片var img = "upload/face/"+data.pic;//判断上传图片的大小 然后设置图片的高与宽的固定宽if (data.width>240 && data.height<240){showimg.html("<img src='"+img+"' id='cropbox' height='240' />");}else if(data.width<240 && data.height>240){showimg.html("<img src='"+img+"' id='cropbox' width='240' />");}else if(data.width<240 && data.height<240){showimg.html("<img src='"+img+"' id='cropbox' width='240' height='240' />");}else{showimg.html("<img src='"+img+"' id='cropbox' />");}//传给php页面,进行保存的图片值$("#src").val(img);//截取图片的js$('#cropbox').Jcrop({aspectRatio: 1,onSelect: updateCoords,minSize:[240,240],maxSize:[240,240],allowSelect:false, //允许选择allowResize:false, //是否允许调整大小setSelect: [ 0, 0, 240, 240 ]});btn.html("上传图片");//上传按钮还原},error:function(xhr){//上传失败btn.html("上传失败");bar.width('0')files.html(xhr.responseText);//返回失败信息}});});$(".delimg").live('click',function(){var pic = $(this).attr("rel");$.post("action.php?act=delimg",{imagename:pic},function(msg){if(msg==1){files.html("删除成功.");showimg.empty();//清空图片progress.hide();//隐藏进度条 }else{alert(msg);}});});});function updateCoords(c){$('#x').val(c.x);$('#y').val(c.y);$('#w').val(c.w);$('#h').val(c.h);};function checkCoords(){if (parseInt($('#w').val())) return true;alert('Please select a crop region then press submit.');return false;};
php后台代码如下:
<?php$action = $_GET['act'];if($action=='delimg'){$filename = $_POST['imagename'];if(!empty($filename)){unlink('upload/face/'.$filename);echo '1';}else{echo '删除失败.';}}else{$picname = $_FILES['mypic']['name'];$picsize = $_FILES['mypic']['size'];if ($picname != "") {if ($picsize > 1024000) {echo '图片大小不能超过1M';exit;}$type = strstr($picname, '.');if ($type != ".gif" && $type != ".jpg") {echo '图片格式不对!';exit;}$rand = rand(100, 999);$pics = date("YmdHis") . $rand . $type;//上传路径$pic_path = "upload/face/". $pics;move_uploaded_file($_FILES['mypic']['tmp_name'], $pic_path);}$size = round($picsize/1024,2);$image_size = getimagesize($pic_path);$arr = array('name'=>$picname,'pic'=>$pics,'size'=>$size,'width'=>$image_size[0],'height'=>$image_size[1]);echo json_encode($arr);}?><?phpif ($_SERVER['REQUEST_METHOD'] == 'POST'){//删除会员以前的头像if(file_exists($MemberFace)) {unlink($MemberFace);}$MemberFace = sliceBanner("cuteboy");echo $MemberFace;exit;}function sliceBanner($UserName){$x = (int)$_POST['x'];$y = (int)$_POST['y'];$w = (int)$_POST['w'];$h = (int)$_POST['h'];$pic = $_POST['src'];//剪切后小图片的名字$str = explode(".",$pic);//图片的格式$type = $str[1]; //图片的格式$filename = $UserName."_".date("YmdHis").".". $type; //重新生成图片的名字$uploadBanner = $pic;$sliceBanner = "upload/face/".$filename;//剪切后的图片存放的位置//创建图片$src_pic = getImageHander($uploadBanner);$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);//删除已上传未裁切的图片if(file_exists($uploadBanner)) {unlink($uploadBanner);}//返回新图片的位置return $sliceBanner;}//初始化图片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;}?>
打包下载
- php+jquery+Jcrop实现上传-截取-保存图片功能
- 使用jquery jcrop插件进行图片的截取与保存
- 使用jquery jcrop插件进行图片的截取与保存
- 使用jquery jcrop插件进行图片的截取与保存
- PHP整合Jcrop截取的上传头像功能
- jquery+Jcrop+servlet图片上传裁剪选择保存实例
- JQuery 图像裁剪插件Jcrop实现图片上传功能(mysql DB)
- 使用Jcrop实现图片上传、剪裁和保存(ASP.NET)
- ASP.NET使用Jcrop插件实现图片上传裁剪功能
- struts2+jsp+jquery+Jcrop实现图片裁剪并上传
- struts2+jsp+jquery+Jcrop实现图片裁剪并上传
- jquery jcrop 与后台截取图片
- 利用jquery Jcrop和 php实现截图功能
- 利用jquery Jcrop和 php实现截图功能
- uploadify+jcrop实现头像上传裁剪功能
- springMVC+jcrop实现头像上传截图功能
- 使用jquery.uploadify、jquery.Jcrop和php实现炫酷的图片裁剪
- Jcrop插件+Canvas实现图片上传预览+图片裁剪上传
- MySql索引中,对NULL的处理
- Chapter 2. The Software Development Process
- Linux 网卡子接口(网卡别名)
- 命令行svn全部操作
- 环形内存,circle memory
- php+jquery+Jcrop实现上传-截取-保存图片功能
- 如何在各个版本的VC及64位下使用CPUID指令
- qq隐身对其可见有效识别方法(已无效)
- 导数和微分 之间的关系,积分中面积和路程模型
- swing窗口常用设置
- panda3d 根据collision detection(碰撞检测)实例探究Panda3d类组织结构
- 2013年科技行业五大看点(1)
- 二叉排序树向双向链表的转换
- 在公司的经验总结