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 数组实例说明
Aug 18 PHP
Ajax+PHP 边学边练 之二 实例
Nov 24 PHP
php 模拟POST|GET操作实现代码
Jul 20 PHP
linux命令之调试工具strace的深入分析
Jun 03 PHP
ThinkPHP表单自动提交验证实例教程
Jul 18 PHP
ThinkPHP实现支付宝接口功能实例
Dec 02 PHP
PHP自带ZIP压缩、解压缩类ZipArchiv使用指南
Mar 03 PHP
SAE实时日志接口SDK用法示例
Oct 09 PHP
php 防止表单重复提交两种实现方法
Nov 03 PHP
PHP实现对图片的反色处理功能【测试可用】
Feb 01 PHP
Yii框架连表查询操作示例
Sep 06 PHP
浅谈如何提高PHP代码质量之单元测试
May 28 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
PHP 处理TXT文件(打开/关闭/检查/读取)
2013/05/13 PHP
解析Linux下Varnish缓存的配置优化
2013/06/20 PHP
PHP 验证码不显示只有一个小红叉的解决方法
2013/09/30 PHP
PHP编程计算日期间隔天数的方法
2017/04/26 PHP
JavaScript实现快速排序(自已编写)
2012/12/19 Javascript
框架页面高度自动刷新的Javascript脚本
2013/11/01 Javascript
js获取判断上传文件后缀名的示例代码
2014/02/19 Javascript
js读取被点击次数的简单实例(从数据库中读取)
2014/03/07 Javascript
自己用jQuery写了一个图片的马赛克消失效果
2014/05/04 Javascript
js实现鼠标感应图片展示的方法
2015/02/27 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
2016/01/03 Javascript
使用getBoundingClientRect方法实现简洁的sticky组件的方法
2016/03/22 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
2016/06/23 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
2016/07/06 Javascript
js实现为a标签添加事件的方法(使用闭包循环)
2016/08/02 Javascript
jQuery使用deferreds串行多个ajax请求
2016/08/22 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
2016/10/26 Javascript
Bootstrap源码解读表单(2)
2016/12/22 Javascript
Vue官方文档梳理之全局配置
2017/11/22 Javascript
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
2018/08/20 Javascript
C#程序员入门学习微信小程序的笔记
2019/03/05 Javascript
Vue.extend 编程式插入组件的实现
2019/11/18 Javascript
实现vuex原理的示例
2020/10/21 Javascript
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
[18:20]DOTA2 HEROS教学视频教你分分钟做大人-昆卡
2014/06/11 DOTA
Python中运算符&quot;==&quot;和&quot;is&quot;的详解
2016/10/08 Python
python 代码运行时间获取方式详解
2020/09/18 Python
国际旅客访问北美最大的汽车租赁提供商:Alamo Rent A Car
2018/06/13 全球购物
Ariat英国官网:为世界顶级马术运动员制造最优质的鞋类和服装
2020/02/14 全球购物
小区文明倡议书
2014/05/16 职场文书
仓库保管员岗位职责
2015/02/09 职场文书
车间统计员岗位职责
2015/04/14 职场文书
中学生社会实践教育活动总结
2015/05/06 职场文书
党支部综合考察意见
2015/06/01 职场文书
基层工作经历证明
2015/06/19 职场文书
GO语言字符串处理函数之处理Strings包
2022/04/14 Golang