本文实例讲解了PHP图片上传并压缩的实现方法,分享给大家供大家参考,具体内容如下

使用到三个文件

  • connect.php:连接数据库
  • test_upload.php:执行SQL语句
  • upload_img.php:上传图片并压缩

三个文件代码如下:连接数据库:connect.php

<?php$db_host = "";$db_user = "";$db_psw = "";$db_name = "";$db_port = "";$sqlconn=new mysqli($db_host,$db_user,$db_psw,$db_name);$q="set names utf8;";$result=$sqlconn->query($q);if (mysqli_connect_errno()) { printf("Connect failed: %s", mysqli_connect_error()); exit();}?>

执行SQL语句:test_upload.php

<?phprequire ("connect.php");require ("upload_img.php");$real_img=$uploadfile; $small_img=$uploadfile_resize;$insert_sql = "insert into img (real_img,small_img) values (?,?)";$result = $sqlconn -> prepare($insert_sql);$result -> bind_param("ss", $real_img,$small_img);$result -> execute();?>

上传图片并压缩upload_img.php

<?php //设置文件保存目录$uploaddir = "upfiles/"; //设置允许上传文件的类型$type=array("jpg","gif","bmp","jpeg","png"); //获取文件后缀名函数 function fileext($filename) {  return substr(strrchr($filename, "."), 1); } //生成随机文件名函数 function random($length) {  $hash = "CR-";  $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";  $max = strlen($chars) - 1;  mt_srand((double)microtime() * 1000000);  for($i = 0; $i < $length; $i++)  {   $hash .= $chars[mt_rand(0, $max)];  }  return $hash; } $a=strtolower(fileext($_FILES["filename"]["name"])); //判断文件类型 if(!in_array(strtolower(fileext($_FILES["filename"]["name"])),$type)) {  $text=implode(",",$type);  $ret_code=3;//文件类型错误 $page_result=$text; $retArray = array("ret_code" => $ret_code,"page_result"=>$page_result); $retJson = json_encode($retArray); echo $retJson; return;} //生成目标文件的文件名 else{  $filename=explode(".",$_FILES["filename"]["name"]);  do  {   $filename[0]=random(10); //设置随机数长度   $name=implode(".",$filename);   //$name1=$name.".Mcncc";   $uploadfile=$uploaddir.$name;  }  while(file_exists($uploadfile));  if (move_uploaded_file($_FILES["filename"]["tmp_name"],$uploadfile))  {   if(is_uploaded_file($_FILES["filename"]["tmp_name"]))   {   $ret_code=1;//上传失败  }  else  {//上传成功  $ret_code=0; }  } $retArray = array("ret_code" => $ret_code);$retJson = json_encode($retArray);echo $retJson;}//压缩图片$uploaddir_resize="upfiles_resize/";$uploadfile_resize=$uploaddir_resize.$name;//$pic_width_max=120;//$pic_height_max=90;//以上与下面段注释可以联合使用,可以使图片根据计算出来的比例压缩$file_type=$_FILES["filename"]["type"];function ResizeImage($uploadfile,$maxwidth,$maxheight,$name){ //取得当前图片大小 $width = imagesx($uploadfile); $height = imagesy($uploadfile); $i=0.5; //生成缩略图的大小 if(($width > $maxwidth) || ($height > $maxheight)) {  /*  $widthratio = $maxwidth/$width;  $heightratio = $maxheight/$height;    if($widthratio < $heightratio)  {   $ratio = $widthratio;  }  else  {    $ratio = $heightratio;  }    $newwidth = $width * $ratio;  $newheight = $height * $ratio;  */  $newwidth = $width * $i;  $newheight = $height * $i;  if(function_exists("imagecopyresampled"))  {   $uploaddir_resize = imagecreatetruecolor($newwidth, $newheight);   imagecopyresampled($uploaddir_resize, $uploadfile, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);  }  else  {   $uploaddir_resize = imagecreate($newwidth, $newheight);   imagecopyresized($uploaddir_resize, $uploadfile, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);  }    ImageJpeg ($uploaddir_resize,$name);  ImageDestroy ($uploaddir_resize); } else {  ImageJpeg ($uploadfile,$name); }}if($_FILES["filename"]["size"]){ if($file_type == "image/pjpeg"||$file_type == "image/jpg"|$file_type == "image/jpeg") {  //$im = imagecreatefromjpeg($_FILES[$upload_input_name]["tmp_name"]);  $im = imagecreatefromjpeg($uploadfile); } elseif($file_type == "image/x-png") {  //$im = imagecreatefrompng($_FILES[$upload_input_name]["tmp_name"]);  $im = imagecreatefromjpeg($uploadfile); } elseif($file_type == "image/gif") {  //$im = imagecreatefromgif($_FILES[$upload_input_name]["tmp_name"]);  $im = imagecreatefromjpeg($uploadfile); } else//默认jpg {  $im = imagecreatefromjpeg($uploadfile); } if($im) {  ResizeImage($im,$pic_width_max,$pic_height_max,$uploadfile_resize);   ImageDestroy ($im); }} ?>

请按照现实情况更改connect.php,test_upload.php中对应的信息。

以上就是PHP实现图片上传并压缩的方法,希望对大家的学习php程序设计有所帮助