当前位置:首页 > PHP教程 > php上传下载 > 列表

PHP实现图片上传并压缩

发布:smiling 来源: PHP粉丝网  添加日期:2021-06-30 21:42:16 浏览: 评论:0 

这篇文章主要介绍了PHP实现图片上传并压缩的相关资料,上传图片然后按照比例缩略图,感兴趣的小伙伴们可以参考一下,本文实例讲解了PHP图片上传并压缩的实现方法,分享给大家供大家参考,具体内容如下

使用到三个文件

connect.php:连接数据库

test_upload.php:执行SQL语句

upload_img.php:上传图片并压缩

三个文件代码如下:

连接数据库:connect.php

  1. <?php 
  2. $db_host = ''
  3. $db_user = ''
  4. $db_psw = ''
  5. $db_name = ''
  6. $db_port = ''
  7. $sqlconn=new mysqli($db_host,$db_user,$db_psw,$db_name); 
  8. $q="set names utf8;"
  9. $result=$sqlconn->query($q); 
  10. if (mysqli_connect_errno()) { 
  11.  printf("Connect failed: %s\n", mysqli_connect_error()); 
  12.  exit(); 
  13. ?> 

执行SQL语句:test_upload.php

  1. <?php 
  2. require ("connect.php"); 
  3. require ("upload_img.php"); 
  4. $real_img=$uploadfile;  
  5. $small_img=$uploadfile_resize
  6. $insert_sql = "insert into img (real_img,small_img) values (?,?)"
  7. $result = $sqlconn -> prepare($insert_sql); 
  8. $result -> bind_param("ss"$real_img,$small_img); 
  9. $result -> execute(); 
  10. ?> 

上传图片并压缩:upload_img.php

  1. <?php  
  2. //设置文件保存目录 
  3. $uploaddir = "upfiles/";  
  4. //设置允许上传文件的类型 
  5. $type=array("jpg","gif","bmp","jpeg","png");  
  6.  
  7. //获取文件后缀名函数  
  8. function fileext($filename)  
  9. {  
  10.  return substr(strrchr($filename'.'), 1);  
  11. }  
  12.  
  13. //生成随机文件名函数  
  14. function random($length)  
  15. {  
  16.  $hash = 'CR-';  
  17.  $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';  
  18.  $max = strlen($chars) - 1;  
  19.  mt_srand((double)microtime() * 1000000);  
  20.  for($i = 0; $i < $length$i++)  
  21.  {  
  22.   $hash .= $chars[mt_rand(0, $max)];  
  23.  }  
  24.  return $hash;  
  25. }  
  26.  
  27. $a=strtolower(fileext($_FILES['filename']['name']));  
  28.  
  29. //判断文件类型  
  30. if(!in_array(strtolower(fileext($_FILES['filename']['name'])),$type))  
  31. {  
  32.  $text=implode(",",$type);  
  33.  $ret_code=3;//文件类型错误 
  34.  $page_result=$text
  35.  $retArray = array('ret_code' => $ret_code,'page_result'=>$page_result); 
  36.  $retJson = json_encode($retArray); 
  37.  echo $retJson
  38.  return
  39. }  
  40.  
  41. //生成目标文件的文件名  
  42. else 
  43. {  
  44.  $filename=explode(".",$_FILES['filename']['name']);  
  45.  do 
  46.  {  
  47.   $filename[0]=random(10); //设置随机数长度  
  48.   $name=implode(".",$filename);  
  49.   //$name1=$name.".Mcncc";  
  50.   $uploadfile=$uploaddir.$name;  
  51.  }  
  52.  
  53.  while(file_exists($uploadfile));  
  54.  
  55.  if (move_uploaded_file($_FILES['filename']['tmp_name'],$uploadfile))  
  56.  {  
  57.   if(is_uploaded_file($_FILES['filename']['tmp_name']))  
  58.   { 
  59.    $ret_code=1;//上传失败 
  60.   }  
  61.  else 
  62.  {//上传成功 
  63.   $ret_code=0; 
  64.  }  
  65.  }  
  66. $retArray = array('ret_code' => $ret_code); 
  67. $retJson = json_encode($retArray); 
  68. echo $retJson
  69.  
  70. //压缩图片 
  71.  
  72. $uploaddir_resize="upfiles_resize/"
  73. $uploadfile_resize=$uploaddir_resize.$name
  74.  
  75. //$pic_width_max=120; 
  76. //$pic_height_max=90; 
  77. //以上与下面段注释可以联合使用,可以使图片根据计算出来的比例压缩 
  78.  
  79. $file_type=$_FILES["filename"]['type']; 
  80.  
  81. function ResizeImage($uploadfile,$maxwidth,$maxheight,$name
  82.  //取得当前图片大小 
  83.  $width = imagesx($uploadfile); 
  84.  $height = imagesy($uploadfile); 
  85.  $i=0.5; 
  86.  //生成缩略图的大小 
  87.  if(($width > $maxwidth) || ($height > $maxheight)) 
  88.  { 
  89.   /* 
  90.   $widthratio = $maxwidth/$width; 
  91.   $heightratio = $maxheight/$height; 
  92.     
  93.   if($widthratio < $heightratio) 
  94.   { 
  95.    $ratio = $widthratio; 
  96.   } 
  97.   else 
  98.   { 
  99.     $ratio = $heightratio; 
  100.   } 
  101.     
  102.   $newwidth = $width * $ratio; 
  103.   $newheight = $height * $ratio; 
  104.   */ 
  105.   $newwidth = $width * $i
  106.   $newheight = $height * $i
  107.   if(function_exists("imagecopyresampled")) 
  108.   { 
  109.    $uploaddir_resize = imagecreatetruecolor($newwidth$newheight); 
  110.    imagecopyresampled($uploaddir_resize$uploadfile, 0, 0, 0, 0, $newwidth$newheight$width$height); 
  111.   } 
  112.   else 
  113.   { 
  114.    $uploaddir_resize = imagecreate($newwidth$newheight); 
  115.    imagecopyresized($uploaddir_resize$uploadfile, 0, 0, 0, 0, $newwidth$newheight$width$height); 
  116.   } 
  117.     
  118.   ImageJpeg ($uploaddir_resize,$name); 
  119.   ImageDestroy ($uploaddir_resize); 
  120.  } 
  121.  else 
  122.  { 
  123.   ImageJpeg ($uploadfile,$name); 
  124.  } 
  125.  
  126.  
  127.  
  128. if($_FILES["filename"]['size']) 
  129.  if($file_type == "image/pjpeg"||$file_type == "image/jpg"|$file_type == "image/jpeg"
  130.  { 
  131.   //$im = imagecreatefromjpeg($_FILES[$upload_input_name]['tmp_name']); 
  132.   $im = imagecreatefromjpeg($uploadfile); 
  133.  } 
  134.  elseif($file_type == "image/x-png"
  135.  { 
  136.   //$im = imagecreatefrompng($_FILES[$upload_input_name]['tmp_name']); 
  137.   $im = imagecreatefromjpeg($uploadfile); 
  138.  } 
  139.  elseif($file_type == "image/gif"
  140.  { 
  141.   //$im = imagecreatefromgif($_FILES[$upload_input_name]['tmp_name']); 
  142.   $im = imagecreatefromjpeg($uploadfile); 
  143.  } 
  144.  else//默认jpg 
  145.  { 
  146.   $im = imagecreatefromjpeg($uploadfile); 
  147.  } 
  148.  if($im
  149.  { 
  150.   ResizeImage($im,$pic_width_max,$pic_height_max,$uploadfile_resize); 
  151.    
  152.   ImageDestroy ($im); 
  153.  } 
  154. }  
  155. ?> 

请按照现实情况更改connect.php,test_upload.php中对应的信息,以上就是PHP实现图片上传并压缩的方法,希望对大家的学习php程序设计有所帮助

Tags: PHP图片上传

分享到: