php+js实现图片的上传、裁剪、预览、提交示例


Posted in PHP onAugust 27, 2013

首先用到的语言是php、插件imgareaselect(下载地址),没有太多花哨的样式,index.php代码如下:

<!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 content="text/html; charset=UTF-8" http-equiv="Content-Type"> 
<link rel="stylesheet" type="text/css" href="css/imgareaselect-default.css" /> 
<script type="text/javascript" src="scripts/jquery.min.js"></script> 
<script type="text/javascript" src="scripts/jquery.imgareaselect.pack.js"></script> 
<script type="text/javascript"> 
function preview(img, selection) { 
$('#selectbanner').data('x',selection.x1); 
$('#selectbanner').data('y',selection.y1); 
$('#selectbanner').data('w',selection.width); 
$('#selectbanner').data('h',selection.height); var scaleX = 100 / (selection.width || 1); 
var scaleY = 100 / (selection.height || 1); 
$('#ferret > img').css({ 
width: Math.round(scaleX * 512) + 'px',//512、390是你上传图片的宽高 
height: Math.round(scaleY * 390) + 'px', 
marginLeft: '-' + Math.round(scaleX * selection.x1) + 'px', 
marginTop: '-' + Math.round(scaleY * selection.y1) + 'px' 
}); 
} 
//这里通过jQuery语法在原来图片后插入预览的小图片 
$(document).ready(function () { 
$('<div id="ferret"><img src="upload_pic/resized_pic.jpg" style="position: relative;" /><div>').css({ 
float: 'left', 
position: 'relative', 
overflow: 'hidden', 
width: '100px', 
height: '100px' 
}) 
.insertAfter($('#selectbanner')); 
$('#selectbanner').imgAreaSelect({ 
selectionColor: 'blue', x1:0, y1:0, x2: 100,//初始位置 
maxWidth:500,y2:100, 
aspectRatio: '1:1',//缩放比例 
selectionOpacity: 0.2 , 
onSelectEnd: preview //裁剪后执行的函数,在上面 
}); 
//确认裁剪 
$("#sliceButton").click(function() { 
var pic = $('#selectbanner').attr('src'); 
// alert(pic); 
var x,y,w,h; 
$.post( 
"cat.php", //(2)将附上这个页面的代码 
{ 
x:$('#selectbanner').data('x'), 
y:$('#selectbanner').data('y'), 
w:$('#selectbanner').data('w'), 
h:$('#selectbanner').data('h'), 
pic:pic 
}, 
function(data){ 
// alert(data); 
//把裁剪后图片加载到#sure 
if(data){ 
$('#sure').attr('src',data); 
} 
} 
); 
}); 
}) 
</script> 
<title>图片裁剪、预览</title> 
</head> 
<body> 
<?php 
//上传图片后,把图片复制到upload文件夹下面 
if($_POST){ 
$photo = $_FILES['img']['name']; 
$tmp_addr = $_FILES['img']['tmp_name']; 
$path = 'upload/'; 
$type=array("jpg","gif","jpeg","png"); 
$tool = substr(strrchr($photo,'.'),1); 
if(!in_array(strtolower($tool),$type)){ 
$text=implode('.',$type); 
echo "您只能上传以下类型文件: ",$text,"<br>"; 
}else{ 
$filename = explode(".",$photo); //把上传的文件名以"."好为准做一个数组。 
$time = date("m-d-H-i-s"); //取当前上传的时间 
$filename[0] = $time; //取文件名 
$name = implode(".",$filename); //上传后的文件名 
$uploadfile = $path.$name; 
$_SESSION['upfile'] = $uploadfile;//上传后的文件名地址 
move_uploaded_file($tmp_addr,$uploadfile); 
} 
// echo $uploadfile; 
} 
?> 
<div id="s"> 
<!--上传图片--> 
<form action="" method="post" enctype="multipart/form-data"> 
<input type="file" id="img" name="img" value="" onclick=""/> 
<input name="submit" id="submit" type="submit" value="提交" class="submit"/> 
</form> 
<!--显示图片--> 
<? if(isset($_SESSION['upfile'])){?> 
<img id="selectbanner" name="selectbanner" src="<? echo $_SESSION['upfile'];?>" title="mypic"/> 
<? }?> 
</div> 
<!--确认裁剪--> 
<div><input type="submit" id="sliceButton" name="sliceButton" value="sliceButton"></div> 
<!--显示裁剪后的图片--> 
< div><img id="sure" src="" style="cursor:hand" /></div> 
</body> 
</html>
PHP 相关文章推荐
php session处理的定制
Mar 16 PHP
php面向对象全攻略 (二) 实例化对象 使用对象成员
Sep 30 PHP
一个比较简单的PHP 分页分组类
Dec 10 PHP
兼容性最强的PHP生成缩略图的函数代码(修改版)
Jan 18 PHP
php开发过程中关于继承的使用方法分享
Jun 17 PHP
php5.3以后的版本连接sqlserver2000的方法
Jul 28 PHP
php给每个段落添加空格的方法
Mar 20 PHP
php实现随机生成易于记忆的密码
Jun 19 PHP
解决nginx不支持thinkphp中pathinfo的问题
Jul 21 PHP
全面解析PHP操作Memcache基本函数
Jul 14 PHP
PHP小偷程序的设计与实现方法详解
Oct 15 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 PHP
phpmyadmin config.inc.php配置示例
Aug 27 #PHP
PHP自动生成后台导航网址的最佳方法
Aug 27 #PHP
PHP连接局域网MYSQL数据库的简单实例
Aug 26 #PHP
php读取excel文件的简单实例
Aug 26 #PHP
PHP中判断变量为空的几种方法分享
Aug 26 #PHP
PHP 如何利用phpexcel导入数据库
Aug 24 #PHP
php实现利用phpexcel导出数据
Aug 24 #PHP
You might like
ThinkPHP实现二级循环读取的方法
2014/11/03 PHP
php自动识别文字编码并转换为目标编码的方法
2015/08/08 PHP
腾讯CMEM的PHP扩展编译安装方法
2015/09/25 PHP
php微信公众平台开发之微信群发信息
2016/09/13 PHP
php实现给二维数组中所有一维数组添加值的方法
2017/02/04 PHP
PHP实现的获取文件mimes类型工具类示例
2018/04/08 PHP
jQuery实现当前页面标签高亮显示的方法
2015/03/10 Javascript
基于jQuery实现以手风琴方式展开和折叠导航菜单
2016/01/28 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
Javascript数组循环遍历之forEach详解
2016/11/07 Javascript
详谈jQuery unbind 删除绑定事件 / 移除标签方法
2017/03/02 Javascript
微信小程序 下拉菜单的实现
2017/04/06 Javascript
详解wow.js中各种特效对应的类名
2017/09/13 Javascript
基于Vue实现关键词实时搜索高亮显示关键词
2018/07/21 Javascript
layui实现数据分页功能
2019/07/27 Javascript
vue 接口请求地址前缀本地开发和线上开发设置方式
2020/08/13 Javascript
Python编程中的文件操作攻略
2015/10/16 Python
Python中正则表达式详解
2017/05/17 Python
一份python入门应该看的学习资料
2018/04/11 Python
pandas进行数据的交集与并集方式的数据合并方法
2018/06/27 Python
Python中的groupby分组功能的实例代码
2018/07/11 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
Python整数对象实现原理详解
2019/07/01 Python
python PyQt5/Pyside2 按钮右击菜单实例代码
2019/08/17 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
Python爬虫 urllib2的使用方法详解
2019/09/23 Python
python3 re返回形式总结
2020/11/20 Python
html5 Canvas画图教程(1)—画图的基本常识
2013/01/09 HTML / CSS
数据库测试通常都包括哪些方面
2015/11/30 面试题
家长会演讲稿范文
2014/01/10 职场文书
集团薪酬管理制度
2014/01/13 职场文书
建筑工地标语
2014/06/18 职场文书
美容院合作经营协议书
2014/10/10 职场文书
2014年小学安全工作总结
2014/12/04 职场文书
财政局长个人总结
2015/03/04 职场文书
MySQL常见优化方案汇总
2022/01/18 MySQL