- 浏览: 203338 次
- 性别:
- 来自: 湖南
文章分类
最新评论
PHP+jQuery上传图片并对已上载的图片进行裁切,目前比较流行的技术。上传成功后,插件会自动显示上传后及载切后的部分图像 ,这时你可以自己拖动鼠标划出一个区域,并可以移动这些区域,在最终效果图上会显示你所作的操作,最后点击裁切保存按钮会最终保存图像。
<?php session_start(); if (strlen($_SESSION['random_key'])==0){ $_SESSION['random_key'] = strtotime(date('Y-m-d H:i:s')); $_SESSION['user_file_ext']= ""; } $upload_dir = "upload_pic"; // 存放上传图片的目录 $upload_path = $upload_dir."/"; // 存放裁切后的图像 $large_image_prefix = "resize_"; // 上传后重命名未裁切图片的附加字符 $thumb_image_prefix = "thumbnail_"; // 上传后重命名已裁切图片的附加字符 $large_image_name = $large_image_prefix.$_SESSION['random_key']; // 上传后未裁切的图片名的命名规则 $thumb_image_name = $thumb_image_prefix.$_SESSION['random_key']; // 上传后已裁切的图片名的命名规则 $max_file = "3"; // 上传图片大小,这里默认3M $max_width = "500"; // 上传图片的最大宽度 $thumb_width = "100"; // 裁切后小图的初始宽度 $thumb_height = "100"; // 裁切后小图的初始高度 // 以下数组存放允许上传的文件类型 $allowed_image_types = array('image/pjpeg'=>"jpg",'image/jpeg'=>"jpg",'image/jpg'=>"jpg",'image/png'=>"png",'image/x-png'=>"png",'image/gif'=>"gif"); $allowed_image_ext = array_unique($allowed_image_types); foreach ($allowed_image_ext as $mime_type => $ext) { $image_ext.= strtoupper($ext)." "; } //download by http://www.codepub.com function resizeImage($image,$width,$height,$scale) { list($imagewidth, $imageheight, $imageType) = getimagesize($image); $imageType = image_type_to_mime_type($imageType); $newImageWidth = ceil($width * $scale); $newImageHeight = ceil($height * $scale); $newImage = imagecreatetruecolor($newImageWidth,$newImageHeight); switch($imageType) { case "image/gif": $source=imagecreatefromgif($image); break; case "image/pjpeg": case "image/jpeg": case "image/jpg": $source=imagecreatefromjpeg($image); break; case "image/png": case "image/x-png": $source=imagecreatefrompng($image); break; } imagecopyresampled($newImage,$source,0,0,0,0,$newImageWidth,$newImageHeight,$width,$height); switch($imageType) { case "image/gif": imagegif($newImage,$image); break; case "image/pjpeg": case "image/jpeg": case "image/jpg": imagejpeg($newImage,$image,90); break; case "image/png": case "image/x-png": imagepng($newImage,$image); break; } chmod($image, 0777); return $image; } //裁切主函数 function resizeThumbnailImage($thumb_image_name, $image, $width, $height, $start_width, $start_height, $scale){ list($imagewidth, $imageheight, $imageType) = getimagesize($image); $imageType = image_type_to_mime_type($imageType); $newImageWidth = ceil($width * $scale); $newImageHeight = ceil($height * $scale); $newImage = imagecreatetruecolor($newImageWidth,$newImageHeight); switch($imageType) { case "image/gif": $source=imagecreatefromgif($image); break; case "image/pjpeg": case "image/jpeg": case "image/jpg": $source=imagecreatefromjpeg($image); break; case "image/png": case "image/x-png": $source=imagecreatefrompng($image); break; } imagecopyresampled($newImage,$source,0,0,$start_width,$start_height,$newImageWidth,$newImageHeight,$width,$height); switch($imageType) { case "image/gif": imagegif($newImage,$thumb_image_name); break; case "image/pjpeg": case "image/jpeg": case "image/jpg": imagejpeg($newImage,$thumb_image_name,90); break; case "image/png": case "image/x-png": imagepng($newImage,$thumb_image_name); break; } chmod($thumb_image_name, 0777); return $thumb_image_name; } function getHeight($image) { $size = getimagesize($image); $height = $size[1]; return $height; } function getWidth($image) { $size = getimagesize($image); $width = $size[0]; return $width; } $large_image_location = $upload_path.$large_image_name.$_SESSION['user_file_ext']; $thumb_image_location = $upload_path.$thumb_image_name.$_SESSION['user_file_ext']; if(!is_dir($upload_dir)){ mkdir($upload_dir, 0777); chmod($upload_dir, 0777); } if (file_exists($large_image_location)){ if(file_exists($thumb_image_location)){ $thumb_photo_exists = "<img src=\"".$upload_path.$thumb_image_name.$_SESSION['user_file_ext']."\" alt=\"裁切区域的图像\"/>"; }else{ $thumb_photo_exists = ""; } $large_photo_exists = "<img src=\"".$upload_path.$large_image_name.$_SESSION['user_file_ext']."\" alt=\"大图\"/>"; } else { $large_photo_exists = ""; $thumb_photo_exists = ""; } if (isset($_POST["upload"])) { $userfile_name = $_FILES['image']['name']; $userfile_tmp = $_FILES['image']['tmp_name']; $userfile_size = $_FILES['image']['size']; $userfile_type = $_FILES['image']['type']; $filename = basename($_FILES['image']['name']); $file_ext = strtolower(substr($filename, strrpos($filename, '.') + 1)); if((!empty($_FILES["image"])) && ($_FILES['image']['error'] == 0)) { foreach ($allowed_image_types as $mime_type => $ext) { if($file_ext==$ext && $userfile_type==$mime_type){ $error = ""; break; }else{ $error = "文件 <strong>".$image_ext."</strong> 不是期望的格式。<br />"; } } if ($userfile_size > ($max_file*1048576)) { $error.= "图片不要超过 ".$max_file."MB"; } }else{ $error= "请先选择图像"; } if (strlen($error)==0){ if (isset($_FILES['image']['name'])){ $large_image_location = $large_image_location.".".$file_ext; $thumb_image_location = $thumb_image_location.".".$file_ext; $_SESSION['user_file_ext']=".".$file_ext; move_uploaded_file($userfile_tmp, $large_image_location); chmod($large_image_location, 0777); $width = getWidth($large_image_location); $height = getHeight($large_image_location); if ($width > $max_width){ $scale = $max_width/$width; $uploaded = resizeImage($large_image_location,$width,$height,$scale); }else{ $scale = 1; $uploaded = resizeImage($large_image_location,$width,$height,$scale); } if (file_exists($thumb_image_location)) { unlink($thumb_image_location); } } header("location:".$_SERVER["PHP_SELF"]); exit(); } } if (isset($_POST["upload_thumbnail"]) && strlen($large_photo_exists)>0) { $x1 = $_POST["x1"]; $y1 = $_POST["y1"]; $x2 = $_POST["x2"]; $y2 = $_POST["y2"]; $w = $_POST["w"]; $h = $_POST["h"]; $scale = $thumb_width/$w; $cropped = resizeThumbnailImage($thumb_image_location, $large_image_location,$w,$h,$x1,$y1,$scale); header("location:".$_SERVER["PHP_SELF"]); exit(); } if ($_GET['a']=="delete" && strlen($_GET['t'])>0){ $large_image_location = $upload_path.$large_image_prefix.$_GET['t']; $thumb_image_location = $upload_path.$thumb_image_prefix.$_GET['t']; if (file_exists($large_image_location)) { unlink($large_image_location); } if (file_exists($thumb_image_location)) { unlink($thumb_image_location); } header("location:".$_SERVER["PHP_SELF"]); exit(); } ?> <!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 http-equiv="Content-Type" content="text/html; charset=gb2312" /> <meta name="generator" content="WebMotionUK" /> <title>jQuery+php图片裁切</title> <script type="text/javascript" src="js/jquery-pack.js"></script> <script type="text/javascript" src="js/jquery.imgareaselect.min.js"></script> </head> <body> <?php if(strlen($large_photo_exists)>0){ $current_large_image_width = getWidth($large_image_location); $current_large_image_height = getHeight($large_image_location);?> <script type="text/javascript"> function preview(img, selection) { var scaleX = <?php echo $thumb_width;?> / selection.width; var scaleY = <?php echo $thumb_height;?> / selection.height; $('#thumbnail + div > img').css({ width: Math.round(scaleX * <?php echo $current_large_image_width;?>) + 'px', height: Math.round(scaleY * <?php echo $current_large_image_height;?>) + 'px', marginLeft: '-' + Math.round(scaleX * selection.x1) + 'px', marginTop: '-' + Math.round(scaleY * selection.y1) + 'px' }); $('#x1').val(selection.x1); $('#y1').val(selection.y1); $('#x2').val(selection.x2); $('#y2').val(selection.y2); $('#w').val(selection.width); $('#h').val(selection.height); } $(document).ready(function () { $('#save_thumb').click(function() { var x1 = $('#x1').val(); var y1 = $('#y1').val(); var x2 = $('#x2').val(); var y2 = $('#y2').val(); var w = $('#w').val(); var h = $('#h').val(); if(x1=="" || y1=="" || x2=="" || y2=="" || w=="" || h==""){ alert("请先选择上传图片"); return false; }else{ return true; } }); }); $(window).load(function () { $('#thumbnail').imgAreaSelect({ aspectRatio: '1:<?php echo $thumb_height/$thumb_width;?>', onSelectChange: preview }); }); </script> <?php }?> <h1>jQuery+php上传图片并裁切</h1> <?php if(strlen($error)>0){ echo "<ul><li><strong>错误!</strong></li><li>".$error."</li></ul>"; } if(strlen($large_photo_exists)>0 && strlen($thumb_photo_exists)>0){ echo $large_photo_exists." ".$thumb_photo_exists; echo "<p><a href=\"".$_SERVER["PHP_SELF"]."?a=delete&t=".$_SESSION['random_key'].$_SESSION['user_file_ext']."\">删除图像</a></p>"; echo "<p><a href=\"".$_SERVER["PHP_SELF"]."\">再来一张</a></p>"; $_SESSION['random_key']= ""; $_SESSION['user_file_ext']= ""; }else{ if(strlen($large_photo_exists)>0){?> <h2>请拖动鼠标选择裁切区域:</h2> <div align="center"> <img src="<?php echo $upload_path.$large_image_name.$_SESSION['user_file_ext'];?>" style="float: left; margin-right: 10px;" id="thumbnail" alt="Create Thumbnail" /> <div style="border:1px #e5e5e5 solid; float:left; position:relative; overflow:hidden; width:<?php echo $thumb_width;?>px; height:<?php echo $thumb_height;?>px;"> <img src="<?php echo $upload_path.$large_image_name.$_SESSION['user_file_ext'];?>" style="position: relative;" alt="Thumbnail Preview" /> </div> <br style="clear:both;"/> <form name="thumbnail" action="<?php echo $_SERVER["PHP_SELF"];?>" method="post"> <input type="hidden" name="x1" value="" id="x1" /> <input type="hidden" name="y1" value="" id="y1" /> <input type="hidden" name="x2" value="" id="x2" /> <input type="hidden" name="y2" value="" id="y2" /> <input type="hidden" name="w" value="" id="w" /> <input type="hidden" name="h" value="" id="h" /> <input type="submit" name="upload_thumbnail" value="保存" id="save_thumb" /> </form> </div> <hr /> <?php } ?> <form name="photo" enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"];?>" method="post"> <input type="file" name="image" size="30" /> <input type="submit" name="upload" value="Upload" /> </form> <?php } ?> </body> </html>
- jquery_php_crop.zip (397.9 KB)
- 下载次数: 221
发表评论
-
php 报表开发
2011-10-29 02:21 4516 什么是报表 报表( 报: 报告 表: 表格 图表) ... -
php使用excel_class.php操作Excel文件
2011-05-11 15:53 2672<?php //header("Cont ... -
信息采集
2011-03-18 13:47 1041php支持多种远程文件复制,拷贝方法,常用有fsockop ... -
正则表达式
2011-03-12 09:37 10091、正则i,s,m,g 这些是模 ... -
PHP 和 AJAX
2011-01-07 09:22 790AJAX 简介 AJAX = Asynchronous ... -
PHP XML
2011-01-06 15:59 968PHP XML PHP XML Expat 解析器 ... -
PHP 数据库
2011-01-06 15:15 921PHP MySQL 简介 MySQL 是最流行的开源数据库服务 ... -
PHP 高级
2011-01-06 13:26 1296PHP Date() PHP 的 date() 函数用于格式化 ... -
PHP 基础
2011-01-06 11:36 958PHP 是一种创建动态交互 ... -
电子邮件开发
2010-12-24 15:19 977<?php //发送邮件的类 class Smt ... -
电子商务网站支付接口应用
2010-12-03 10:32 1290支付宝纯担保 支付宝(接口网站:www.alipay.com ... -
PHP_方法_PHP添加水印方法
2010-10-06 14:38 2607简介摘要:功能:PHP图 ... -
Smarty框架安装使用实例
2010-09-04 08:11 1847ThinkPHP是一个性 ... -
php 代码实现导入导出 mysql数据库
2010-08-02 09:59 1610之前一直是手工导入导出数据库,在服务器端或者客户端备份还 ... -
PHP通用分页程序
2010-01-09 19:57 1751我在一些PHP论坛上经常看到不少PHP初学者对于PHP分页很头 ... -
php配置安装
2010-01-03 14:04 1421我写过的教程不多,而 ...
相关推荐
PHP作为服务器端脚本语言,负责处理文件上传和保存,而jQuery作为客户端JavaScript库,提供用户友好的交互和动态图片裁切。 首先,我们需要在HTML页面上创建一个表单,用于用户选择和提交图片。这个表单通常包含一...
"PHP+jQuery上传图片并裁切的界面预览"是一个典型的前后端协作实现的案例,它结合了服务器端的PHP技术和客户端的jQuery库,以提供用户友好的交互体验。下面将详细讲解这个主题中的关键知识点。 首先,PHP作为服务器...
这个压缩包文件"[图片动画]PHP+jQuery上传图片并裁切_jquery_php_crop.zip"显然是一个示例教程或者代码库,用于教用户如何使用PHP后端与jQuery前端结合实现图片上传和动态裁切的功能。下面我们将深入探讨这个主题,...
"jQuery图片裁切+PHP文件上传"方案就是解决此类问题的一个高效工具,它允许用户在前端预览并裁剪图片,然后通过PHP后端进行安全、稳定的文件上传。本文将深入探讨这一技术的实现原理和步骤。 一、jQuery图片裁切 ...
在这个程序中,PHP接收上传的图片文件,解析jQuery传递的裁剪坐标和比例信息,然后调用相应的函数对图片进行裁剪,并保存裁剪后的结果。 该程序可能包含以下核心组件: 1. HTML表单:用于用户选择本地图片,通常...
在本文中,我们将深入探讨如何使用jQuery和PHP实现图片上传及裁切功能。这个功能广泛应用于网站中的头像设置、产品图片编辑等...通过合理的代码组织和错误处理,我们可以构建一个稳定且易于维护的图片上传裁切系统。
PHP jQuery上传图片并对已上载的图片进行裁切,目前比较流行的技术。上传成功后,插件会自动显示上传后及载切后的部分图像 ,这时你可以自己拖动鼠标划出一个区域,并可以移动这些区域,在最终效果图上会显示你所作...
在本文中,我们将深入探讨如何使用JavaScript(JS)与PHP结合实现图片上传和裁切功能。这个过程通常涉及前端的图像处理和后端的数据存储。我们主要关注的技术栈包括jQuery库,一个流行的JavaScript库,以及PHP,一种...
PHP+jQuery上传图片并对已上载的图片进行裁切,目前比较流行的技术。上传成功后,插件会自动显示上传后及载切后的部分图像 ,这时你可以自己拖动鼠标划出一个区域,并可以移动这些区域,在最终效果图上会显示你所作...
PHP+jQuery上传图片并对已上载的图片进行裁切,目前比较流行的技术。上传成功后,插件会自动显示上传后及载切后的部分图像 ,这时你可以自己拖动鼠标划出一个区域,并可以移动这些区域,在最终效果图上会显示你所作...
PHP实例开发源码—jQuery+html5图片上传并裁切预览 php版.zip PHP实例开发源码—jQuery+html5图片上传并裁切预览 php版.zip PHP实例开发源码—jQuery+html5图片上传并裁切预览 php版.zip
PHP jQuery html5头像图片选取上传是一款使用HTML5 jquery实现的PHP图片截取及上传功能,可广泛应用于头像图片裁切上传中,HTML5环境,可方便移植到手机APP中使用。 PHP jQuery html5头像图片选取上传使用方法 ...
在PHP和jQuery的世界里,实现图片的上传与裁切是一项常见的功能需求,尤其在网站开发中,用户可能需要上传头像、产品图片等,并且往往需要按照特定尺寸进行裁剪。下面将详细介绍如何利用PHP和jQuery来实现这个过程。...
该压缩包文件“PHP实例开发源码—jQuery+html5图片上传并裁切预览 php版.zip”包含了一个使用PHP、jQuery和HTML5技术实现的图片上传和裁切预览功能的实例。这个实例对于理解如何在Web应用中处理图片上传、前端预览...
该压缩包文件“基于PHP的jQuery上传图片并裁切源码.zip”主要包含了一套用于网页上实现图片上传和裁切功能的代码实现,利用了PHP作为后端处理语言,前端则依赖于jQuery库。这一功能在现代网页设计中非常常见,尤其是...
在本项目中,“基于PHP的jQuery 上传图片并裁切.zip”是一个包含了使用PHP和jQuery技术实现图片上传和裁剪功能的压缩包。这个压缩包很可能是为了帮助开发者创建一个用户友好的、交互式的图像处理功能,允许用户上传...
这个项目可能是一个Web应用程序的一部分,允许用户选择图片,然后通过前端的jQuery库进行预览和裁剪,最后通过后台的PHP脚本来处理图片并保存到服务器。 首先,我们需要了解PHP的基础知识。PHP(Hypertext ...
PHP+jQuery上传图片并对已上载的图片进行裁切,目前比较流行的技术。上传成功后,插件会自动显示上传后及载切后的部分图像,这时你可以自己拖动鼠标划出一个区域,并可以移动这些区域,在最终效果图上会显示你所作的...
在本实例中,我们探讨的是一个使用PHP和jQuery实现的图片上传及裁切功能。这个功能在现代Web应用中非常常见,特别是在用户需要上传个人头像或者产品图片时。通过结合PHP后端处理和前端jQuery库,我们可以创建一个...