PHP实现图片压缩的两则实例

本文介绍了php实现图片压缩的两种方法,读者可以根据具体应用参考或加以改进,以适应自身应用需求!废话不多说,主要代码部分如下:

实例1:

<?php /** * desription 压缩图片 * @param sting $imgsrc 图片路径 * @param string $imgdst 压缩后保存路径 */function image_png_size_add($imgsrc,$imgdst){   list($width,$height,$type)=getimagesize($imgsrc);   $new_width = ($width>600?600:$width)*0.9;   $new_height =($height>600?600:$height)*0.9;   switch($type){     case 1:       $giftype=check_gifcartoon($imgsrc);       if($giftype){         header('Content-Type:image/gif');         $image_wp=imagecreatetruecolor($new_width, $new_height);         $image = imagecreatefromgif($imgsrc);         imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);         imagejpeg($image_wp, $imgdst,75);         imagedestroy($image_wp);       }       break;     case 2:       header('Content-Type:image/jpeg');       $image_wp=imagecreatetruecolor($new_width, $new_height);       $image = imagecreatefromjpeg($imgsrc);       imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);       imagejpeg($image_wp, $imgdst,75);       imagedestroy($image_wp);       break;     case 3:       header('Content-Type:image/png');       $image_wp=imagecreatetruecolor($new_width, $new_height);       $image = imagecreatefrompng($imgsrc);       imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);       imagejpeg($image_wp, $imgdst,75);       imagedestroy($image_wp);       break;   } } /** * desription 判断是否gif动画 * @param sting $image_file图片路径 * @return boolean t 是 f 否 */function check_gifcartoon($image_file){   $fp = fopen($image_file,'rb');   $image_head = fread($fp,1024);   fclose($fp);   return preg_match("/".chr(0x21).chr(0xff).chr(0x0b).'NETSCAPE2.0'."/",$image_head)?false:true; } ?>

实例2:

<?php/*----------------------------------------------------------------------函数:调整图片尺寸或生成缩略图返回:True/False参数:  $Image  需要调整的图片(含路径)  $Dw=450  调整时最大宽度;缩略图时的绝对宽度  $Dh=450  调整时最大高度;缩略图时的绝对高度  $Type=1  1,调整尺寸; 2,生成缩略图$path='img/';//路径$phtypes=array(  'img/gif',  'img/jpg',  'img/jpeg',  'img/bmp',  'img/pjpeg',  'img/x-png');Function Img($Image,$Dw=450,$Dh=450,$Type=1){  IF(!File_Exists($Image)){  Return False;  }  //如果需要生成缩略图,则将原图拷贝一下重新给$Image赋值  IF($Type!=1){  Copy($Image,Str_Replace(".","_x.",$Image));  $Image=Str_Replace(".","_x.",$Image);  }  //取得文件的类型,根据不同的类型建立不同的对象  $ImgInfo=GetImageSize($Image);  Switch($ImgInfo[2]){  Case 1:  $Img = @ImageCreateFromGIF($Image);  Break;  Case 2:  $Img = @ImageCreateFromJPEG($Image);  Break;  Case 3:  $Img = @ImageCreateFromPNG($Image);  Break;  }  //如果对象没有创建成功,则说明非图片文件  IF(Empty($Img)){  //如果是生成缩略图的时候出错,则需要删掉已经复制的文件  IF($Type!=1){Unlink($Image);}  Return False;  }  //如果是执行调整尺寸操作则  IF($Type==1){  $w=ImagesX($Img);  $h=ImagesY($Img);  $width = $w;  $height = $h;  IF($width>$Dw){   $Par=$Dw/$width;   $width=$Dw;   $height=$height*$Par;   IF($height>$Dh){   $Par=$Dh/$height;   $height=$Dh;   $width=$width*$Par;   }  }ElseIF($height>$Dh){   $Par=$Dh/$height;   $height=$Dh;   $width=$width*$Par;   IF($width>$Dw){   $Par=$Dw/$width;   $width=$Dw;   $height=$height*$Par;   }  }Else{   $width=$width;   $height=$height;  }  $nImg = ImageCreateTrueColor($width,$height);   //新建一个真彩色画布  ImageCopyReSampled($nImg,$Img,0,0,0,0,$width,$height,$w,$h);//重采样拷贝部分图像并调整大小  ImageJpeg ($nImg,$Image);     //以JPEG格式将图像输出到浏览器或文件  Return True;  //如果是执行生成缩略图操作则  }Else{  $w=ImagesX($Img);  $h=ImagesY($Img);  $width = $w;  $height = $h;  $nImg = ImageCreateTrueColor($Dw,$Dh);  IF($h/$w>$Dh/$Dw){ //高比较大   $width=$Dw;   $height=$h*$Dw/$w;   $IntNH=$height-$Dh;   ImageCopyReSampled($nImg, $Img, 0, -$IntNH/1.8, 0, 0, $Dw, $height, $w, $h);  }Else{   //宽比较大   $height=$Dh;   $width=$w*$Dh/$h;   $IntNW=$width-$Dw;   ImageCopyReSampled($nImg, $Img, -$IntNW/1.8, 0, 0, 0, $width, $Dh, $w, $h);  }  ImageJpeg ($nImg,$Image);  Return True;  }}?><html><body><form method="post" enctype="multipart/form-data" name="form1"> <table>  <tr><td>上传图片</td></tr>  <tr><td><input type="file" name="photo" size="20" /></td></tr> <tr><td><input type="submit" value="上传"/></td></tr> </table> 允许上传的文件类型为:<?=implode(', ',$phtypes)?></form><?php if($_SERVER['REQUEST_METHOD']=='POST'){  if (!is_uploaded_file($_FILES["photo"][tmp_name])){   echo "图片不存在";   exit();  }  if(!is_dir('img')){//路径若不存在则创建   mkdir('img');  }  $upfile=$_FILES["photo"];   $pinfo=pathinfo($upfile["name"]);  $name=$pinfo['basename'];//文件名  $tmp_name=$upfile["tmp_name"];  $file_type=$pinfo['extension'];//获得文件类型  $showphpath=$path.$name;    if(in_array($upfile["type"],$phtypes)){   echo "文件类型不符!";   exit();   }  if(move_uploaded_file($tmp_name,$path.$name)){  echo "成功!"; Img($showphpath,100,800,2);  }  echo "<img src=/"".$showphpath."/" />"; }?></body></html>

php技术PHP实现图片压缩的两则实例,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。