当前位置:首页 > PHP教程 > php图像处理 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-03-22 14:01:15 浏览: 评论:0 

这篇文章主要介绍了PHP实现图片压缩的两则实例,很有实用价值,值得借鉴学习,需要的朋友可以参考下。

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

实例1:

  1. <?php  
  2. /**  
  3. * desription 压缩图片  
  4. * @param sting $imgsrc 图片路径  
  5. * @param string $imgdst 压缩后保存路径  
  6. */ 
  7. function image_png_size_add($imgsrc,$imgdst){  
  8.   list($width,$height,$type)=getimagesize($imgsrc);  
  9.   $new_width = ($width>600?600:$width)*0.9;  
  10.   $new_height =($height>600?600:$height)*0.9;  
  11.   switch($type){  
  12.     case 1:  
  13.       $giftype=check_gifcartoon($imgsrc);  
  14.       if($giftype){  
  15.         header('Content-Type:image/gif');  
  16.         $image_wp=imagecreatetruecolor($new_width$new_height);  
  17.         $image = imagecreatefromgif($imgsrc);  
  18.         imagecopyresampled($image_wp$image, 0, 0, 0, 0, $new_width$new_height$width$height);  
  19.         imagejpeg($image_wp$imgdst,75);  
  20.         imagedestroy($image_wp);  
  21.       }  
  22.       break;  
  23.     case 2:  
  24.       header('Content-Type:image/jpeg');  
  25.       $image_wp=imagecreatetruecolor($new_width$new_height);  
  26.       $image = imagecreatefromjpeg($imgsrc);  
  27.       imagecopyresampled($image_wp$image, 0, 0, 0, 0, $new_width$new_height$width$height);  
  28.       imagejpeg($image_wp$imgdst,75);  
  29.       imagedestroy($image_wp);  
  30.       break;  
  31.     case 3:  
  32.       header('Content-Type:image/png');  
  33.       $image_wp=imagecreatetruecolor($new_width$new_height);  
  34.       $image = imagecreatefrompng($imgsrc);  
  35.       imagecopyresampled($image_wp$image, 0, 0, 0, 0, $new_width$new_height$width$height);  
  36.       imagejpeg($image_wp$imgdst,75);  
  37.       imagedestroy($image_wp);  
  38.       break;  
  39.   }  
  40. }  
  41. /**  
  42. * desription 判断是否gif动画  
  43. * @param sting $image_file图片路径  
  44. * @return boolean t 是 f 否  
  45. */ 
  46. function check_gifcartoon($image_file){  
  47.   $fp = fopen($image_file,'rb');  
  48.   $image_head = fread($fp,1024);  
  49.   fclose($fp);  
  50.   return preg_match("/".chr(0x21).chr(0xff).chr(0x0b).'NETSCAPE2.0'."/",$image_head)?false:true;  
  51. }  
  52. ?> 

实例2:

  1. <?php 
  2. /* 
  3. ---------------------------------------------------------------------- 
  4. 函数:调整图片尺寸或生成缩略图 
  5. 返回:True/False 
  6. 参数: 
  7.   $Image  需要调整的图片(含路径) 
  8.   $Dw=450  调整时最大宽度;缩略图时的绝对宽度 
  9.   $Dh=450  调整时最大高度;缩略图时的绝对高度 
  10.   $Type=1  1,调整尺寸; 2,生成缩略图 
  11. $path='img/';//路径 
  12. $phtypes=array
  13.   'img/gif'
  14.   'img/jpg'
  15.   'img/jpeg'
  16.   'img/bmp'
  17.   'img/pjpeg'
  18.   'img/x-png' 
  19. ); 
  20. Function Img($Image,$Dw=450,$Dh=450,$Type=1){ 
  21.   IF(!File_Exists($Image)){ 
  22.   Return False; 
  23.   } 
  24.   //如果需要生成缩略图,则将原图拷贝一下重新给$Image赋值 
  25.   IF($Type!=1){ 
  26.   Copy($Image,Str_Replace(".","_x.",$Image)); 
  27.   $Image=Str_Replace(".","_x.",$Image); 
  28.   } 
  29.   //取得文件的类型,根据不同的类型建立不同的对象 
  30.   $ImgInfo=GetImageSize($Image); 
  31.   Switch($ImgInfo[2]){ 
  32.   Case 1: 
  33.   $Img = @ImageCreateFromGIF($Image); 
  34.   Break; 
  35.   Case 2: 
  36.   $Img = @ImageCreateFromJPEG($Image); 
  37.   Break; 
  38.   Case 3: 
  39.   $Img = @ImageCreateFromPNG($Image); 
  40.   Break; 
  41.   } 
  42.   //如果对象没有创建成功,则说明非图片文件 
  43.   IF(Empty($Img)){ 
  44.   //如果是生成缩略图的时候出错,则需要删掉已经复制的文件 
  45.   IF($Type!=1){Unlink($Image);} 
  46.   Return False; 
  47.   } 
  48.   //如果是执行调整尺寸操作则 
  49.   IF($Type==1){ 
  50.   $w=ImagesX($Img); 
  51.   $h=ImagesY($Img); 
  52.   $width = $w
  53.   $height = $h
  54.   IF($width>$Dw){ 
  55.    $Par=$Dw/$width
  56.    $width=$Dw
  57.    $height=$height*$Par
  58.    IF($height>$Dh){ 
  59.    $Par=$Dh/$height
  60.    $height=$Dh
  61.    $width=$width*$Par
  62.    } 
  63.   }ElseIF($height>$Dh){ 
  64.    $Par=$Dh/$height
  65.    $height=$Dh
  66.    $width=$width*$Par
  67.    IF($width>$Dw){ 
  68.    $Par=$Dw/$width
  69.    $width=$Dw
  70.    $height=$height*$Par
  71.    } 
  72.   }Else{ 
  73.    $width=$width
  74.    $height=$height
  75.   } 
  76.   $nImg = ImageCreateTrueColor($width,$height);   //新建一个真彩色画布 
  77.   ImageCopyReSampled($nImg,$Img,0,0,0,0,$width,$height,$w,$h);//重采样拷贝部分图像并调整大小 
  78.   ImageJpeg ($nImg,$Image);     //以JPEG格式将图像输出到浏览器或文件 
  79.   Return True; 
  80.   //如果是执行生成缩略图操作则 
  81.   }Else{ 
  82.   $w=ImagesX($Img); 
  83.   $h=ImagesY($Img); 
  84.   $width = $w
  85.   $height = $h
  86.   $nImg = ImageCreateTrueColor($Dw,$Dh); 
  87.   IF($h/$w>$Dh/$Dw){ //高比较大 
  88.    $width=$Dw
  89.    $height=$h*$Dw/$w
  90.    $IntNH=$height-$Dh
  91.    ImageCopyReSampled($nImg$Img, 0, -$IntNH/1.8, 0, 0, $Dw$height$w$h); 
  92.   }Else{   //宽比较大 
  93.    $height=$Dh
  94.    $width=$w*$Dh/$h
  95.    $IntNW=$width-$Dw
  96.    ImageCopyReSampled($nImg$Img, -$IntNW/1.8, 0, 0, 0, $width$Dh$w$h); 
  97.   } 
  98.   ImageJpeg ($nImg,$Image); 
  99.   Return True; 
  100.   } 
  101. ?> 
  102. <html><body> 
  103. <form method="post" enctype="multipart/form-data" name="form1"
  104.  <table> 
  105.   <tr><td>上传图片</td></tr> 
  106.   <tr><td><input type="file" name="photo" size="20" /></td></tr> 
  107.  <tr><td><input type="submit" value="上传"/></td></tr> 
  108.  </table> 
  109.  允许上传的文件类型为:<?=implode(', ',$phtypes)?></form> 
  110. <?php 
  111.  if($_SERVER['REQUEST_METHOD']=='POST'){ 
  112.   if (!is_uploaded_file($_FILES["photo"][tmp_name])){ 
  113.    echo "图片不存在"
  114.    exit(); 
  115.   } 
  116.   if(!is_dir('img')){//路径若不存在则创建 
  117.    mkdir('img'); 
  118.   } 
  119.   $upfile=$_FILES["photo"];  
  120.   $pinfo=pathinfo($upfile["name"]); 
  121.   $name=$pinfo['basename'];//文件名 
  122.   $tmp_name=$upfile["tmp_name"]; 
  123.   $file_type=$pinfo['extension'];//获得文件类型 
  124.   $showphpath=$path.$name
  125.     
  126.   if(in_array($upfile["type"],$phtypes)){ 
  127.    echo "文件类型不符!"
  128.    exit(); 
  129.    } 
  130.   if(move_uploaded_file($tmp_name,$path.$name)){ 
  131.   echo "成功!"
  132.  Img($showphpath,100,800,2); 
  133.   } 
  134.   echo "<img src=\"".$showphpath."\" />"
  135.  } 
  136. ?> 
  137. </body> 
  138. </html> 

Tags: PHP图片压缩

分享到: