zoukankan      html  css  js  c++  java
  • 文件上传并生成几种大小的缩略图之二

    <?php
    
    //----------------------------------------- start edit here ---------------------------------------------//
    $script_location = "http://up.online.cm"; // location fo the script
    $maxlimit = 9048576; // maxim image limit
    $folder = "images"; // folder where to save images
    
    // requirements
    $minwidth = 500; // minim width
    $minheight = 500; // minim height
    $maxwidth = 2560; // maxim width
    $maxheight = 1920; // maxim height
    
    // allowed extensions
    $extensions = array('.png', '.gif', '.jpg', '.jpeg','.PNG', '.GIF', '.JPG', '.JPEG');
    //----------------------------------------- end edit here ---------------------------------------------//
    
    	// check that we have a file
    	if((!empty($_FILES["uploadfile"])) && ($_FILES['uploadfile']['error'] == 0)) {
    
    	// check extension
    	$extension = strrchr($_FILES['uploadfile']['name'], '.');
    	if (!in_array($extension, $extensions))	{
    		echo 'wrong file format, alowed only .png , .gif, .jpg, .jpeg
    		<script language="javascript" type="text/javascript">window.top.window.formEnable();</script>';
    	} else {
    
    // get file size
    $filesize = $_FILES['uploadfile']['size'];
    
    	// check filesize
    	if($filesize > $maxlimit){ 
    		echo "File size is too big.";
    	} else if($filesize < 1){ 
    		echo "File size is empty.";
    	} else {
    
    // temporary file
    $uploadedfile = $_FILES['uploadfile']['tmp_name'];
    
    // capture the original size of the uploaded image
    list($width,$height) = getimagesize($uploadedfile);
    
    	// check if image size is lower
    	if($width < $minwidth || $height < $minheight){ 
    		echo 'Image is to small. Required minimum '.$minwidth.'x'.$minheight.'
    		<script language="javascript" type="text/javascript">window.top.window.formEnable();</script>';
    	} else if($width > $maxwidth || $height > $maxheight){ 
    		echo 'Image is to big. Required maximum '.$maxwidth.'x'.$maxheight.'
    		<script language="javascript" type="text/javascript">window.top.window.formEnable();</script>';
    	} else {
    
    // all characters lowercase
    $filename = strtolower($_FILES['uploadfile']['name']);
    
    // replace all spaces with _
    $filename = preg_replace('/\s/', '_', $filename);
    
    // extract filename and extension
    $pos = strrpos($filename, '.'); 
    $basename = substr($filename, 0, $pos); 
    $ext = substr($filename, $pos+1);
    
    // get random number
    $rand = time();
    
    // image name
    $image = $basename .'-'. $rand . "." . $ext;
    
    // check if file exists
    $check = $folder . '/' . $image;
    	if (file_exists($check)) {
    		echo 'Image already exists';
    	} else {
    
    // check if it's animate gif
    $frames = exec("identify -format '%n' ". $uploadedfile ."");
    	if ($frames > 1) {
    		// yes it's animate image
    		// copy original image
    		copy($_FILES['uploadfile']['tmp_name'], $folder . '/' . $image);
    
    		// orignal image location
    		$write_image = $folder . '/' . $image;
    		//ennable form
    		echo '<img src="' . $write_image . '" alt="'. $image .'" alt="'. $image .'" width="500" /><br />
    <input type="text" name="location" value="[IMG]'.$script_location.''.$write_image.'[/IMG]" class="location corners" />
    <script language="javascript" type="text/javascript">window.top.window.formEnable();</script>';
    	} else {
    
    // create an image from it so we can do the resize
     switch($ext){
      case "gif":
    	$src = imagecreatefromgif($uploadedfile);
      break;
      case "jpg":
    	$src = imagecreatefromjpeg($uploadedfile);
      break;
      case "jpeg":
    	$src = imagecreatefromjpeg($uploadedfile);
      break;
      case "png":
    	$src = imagecreatefrompng($uploadedfile);
      break;
     }
    
    // copy original image
    copy($_FILES['uploadfile']['tmp_name'], $folder . '/' . $image);
    
    // orignal image location
    $write_image = $folder . '/' . $image;
    
    // create first thumbnail image - resize original to 80 width x 80 height pixels 
    $newheight = ($height/$width)*80;
    $newwidth = 80;
    $tmp=imagecreatetruecolor($newwidth,$newheight);
    imagealphablending($tmp, false);
    imagesavealpha($tmp,true);
    $transparent = imagecolorallocatealpha($tmp, 255, 255, 255, 127);
    imagefilledrectangle($tmp, 0, 0, $newwidth, $newheight, $transparent);
    imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
    
    // write thumbnail to disk
    $write_thumbimage = $folder .'/thumb-'. $image;
     switch($ext){
      case "gif":
    	imagegif($tmp,$write_thumbimage);
      break;
      case "jpg":
    	imagejpeg($tmp,$write_thumbimage,100);
      break;
      case "jpeg":
    	imagejpeg($tmp,$write_thumbimage,100);
      break;
      case "png":
    	imagepng($tmp,$write_thumbimage);
      break;
     }
    
    // create second thumbnail image - resize original to 125 width x 125 height pixels 
    $newheight = ($height/$width)*125;
    $newwidth = 125;
    $tmp=imagecreatetruecolor($newwidth,$newheight);
    imagealphablending($tmp, false);
    imagesavealpha($tmp,true);
    $transparent = imagecolorallocatealpha($tmp, 255, 255, 255, 127);
    imagefilledrectangle($tmp, 0, 0, $newwidth, $newheight, $transparent);
    imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
    
    // write thumbnail to disk
    $write_thumb2image = $folder .'/thumb2-'. $image;
     switch($ext){
      case "gif":
    	imagegif($tmp,$write_thumb2image);
      break;
      case "jpg":
    	imagejpeg($tmp,$write_thumb2image,100);
      break;
      case "jpeg":
    	imagejpeg($tmp,$write_thumb2image,100);
      break;
      case "png":
    	imagepng($tmp,$write_thumb2image);
      break;
     }
    
    // create third thumbnail image - resize original to 125 width x 125 height pixels 
    $newheight = ($height/$width)*250;
    $newwidth = 250;
    $tmp=imagecreatetruecolor($newwidth,$newheight);
    imagealphablending($tmp, false);
    imagesavealpha($tmp,true);
    $transparent = imagecolorallocatealpha($tmp, 255, 255, 255, 127);
    imagefilledrectangle($tmp, 0, 0, $newwidth, $newheight, $transparent);
    imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
    
    // write thumbnail to disk
    $write_thumb3image = $folder .'/thumb3-'. $image;
     switch($ext){
      case "gif":
    	imagegif($tmp,$write_thumb3image);
      break;
      case "jpg":
    	imagejpeg($tmp,$write_thumb3image,100);
      break;
      case "jpeg":
    	imagejpeg($tmp,$write_thumb3image,100);
      break;
      case "png":
    	imagepng($tmp,$write_thumb3image);
      break;
     }
    
    // all is done. clean temporary files
    imagedestroy($src);
    imagedestroy($tmp);
    
    // image preview
    echo "<img src='" . $write_thumbimage . "' alt='". $image ."' /><br />
    <input type='text' name='location' value='[IMG]".$script_location."/". $write_thumbimage ."[/IMG]' class='location corners' /><br />
    <br />
    <img src='" . $write_thumb2image . "' alt='". $image ."' /><br />
    <input type='text' name='location' value='[IMG]".$script_location."/". $write_thumb2image ."[/IMG]' class='location corners' /><br />
    <br />
    <img src='" . $write_thumb3image . "' alt='". $image ."' /><br />
    <input type='text' name='location' value='[IMG]".$script_location."/". $write_thumb3image ."[/IMG]' class='location corners' /><br />
    <br />
    <img src='" . $write_image . "' alt='". $image ."' alt='". $image ."' width='500' /><br />
    <input type='text' name='location' value='[IMG]".$script_location."/".$write_image."[/IMG]' class='location corners' />
    <script language='javascript' type='text/javascript'>window.top.window.formEnable();</script>
    <div class='clear'></div>";
    	  }
    	}
      }
    }
    	// database connection
    	include('inc/db.inc.php');
    
    			// insert into mysql database and show success message
    			mysql_query("INSERT INTO `image_upload` (`id`, `image`, `thumbnail`, `thumbnail2`, `thumbnail3` ) VALUES (NULL, '". $image ."', 'thumb-". $image ."', 'thumb2-". $image ."', 'thumb3-". $image ."')");
    	  }
    		// error all fileds must be filled
    	} else {
    		echo '<div class="wrong">You must to fill all fields!</div>'; }
    ?>
    Image uploader Ajax图片上传生成缩略图,原版是国外一个有名的图片上传程序,采用无刷新的Ajax上传方式,上传成功后,可生成四张不同大小的缩略图,参数可以自己调整,演示效果可看如本站首页。同时它还可实现与数据库对接,将图片信息保存至数据库。
    在本站上传图片只需要点击浏览选择图片后就会自动上传
    在本站上传图片后会在首页显示最新上传的9张
    上传图片根据图片大小时间不等.请耐心等待.
    如等待几分钟后还处于上传状态.请点击本站logo刷新本页.如果您所上传的图片了出现了首页下部.证明上传成功.可以根据下面所说的规则得出其它图片地址.
    本站为测试用,不做商业用途.所以带宽有限.如遇上传失败,请重新上传.
    首页展示图片为第一张缩略图 格式为:http://up.online.cm/images/thumb-原图地址
    根据上一条的说明四张图片分别为 1.thumb-原图地址;2.thumb2-原图地址;3.thumb3-原图地址;4.原图地址
    论据以上说明.如果知道一张图片的地址了,就可以知道其它图片的地址了.
    本站四张图片分别规格为 限制宽: 80px 125px 250px 原图
    本站上传图片支持格式为:gif, jpg, png
    本站上传图片尺寸限制为:最小不能小于 100px x100px 最大不能大于 2560px x 1920px
    如果本站配置不能满足您的要求的话.请您自行下载源码安装到空间中.
  • 相关阅读:
    【转】Android实战技巧:ViewStub的应用
    3.11 返回数据到前一个Activity
    在用android日志的时候老是弹出一个窗口,内容为:"Copy" did not complete normally. Please see the log 和 什么函数,能达到和android手机上按“返回”键一样的效果?
    Windows下的Android模拟器设置内存大小
    AlertDialog.Builder对话框类的用法(二)
    android版计算器
    【转】Android中字符串的拆分split
    readelf
    6200 uboot 测试版分析(二)
    cpp
  • 原文地址:https://www.cnblogs.com/y0umer/p/2809620.html
Copyright © 2011-2022 走看看