php 根据请求生成缩略图片保存到Linux图片服务器的代码

发布时间:2020-02-16编辑:脚本学堂
本文介绍下,用php根据请求生成缩略图,并保存到linux架设的图片服务器上的代码,有需要的朋友,参考下吧。

这个功能,有点类似图片站点分离的操作,就是将图片单独架设在一台服务器上,有兴趣的朋友,好好研究下吧。

代码如下:
 

复制代码 代码示例:
<?php
/**
 * 缩略图片 linux图片服务器
 * edit www.jb200.com
*/
    $picID=$_GET['imgID']; 
    $picTypes=".".$_GET['imgType']; 
    $picWidth=$_GET['ImgWidth']; 
    if($picID!="") 
    { 
          //请求的是小图 
          if($picWidth>0){ 
              //如果小图存在 
              if(file_exists($picID."_".$picWidth.$picTypes)) 
              { 
                  outputImg($picID."_".$picWidth.$picTypes); 
              }else 
              { 
                  if(file_exists($picID."_0".$picTypes)){ 
                  //如果不存在小图直接生成小图 
                  resizeImg($picID."_0".$picTypes,$picWidth,$picWidth,$picID."_".$picWidth.$picTypes); 
                  //输出 
                  outputImg($picID."_".$picWidth.$picTypes); 
                  }else 
                  { 
                      //如果大图不存在 
                      resizeImg('noDefaultImage.gif',$picWidth,$picWidth,noDefaultImage."_".$picWidth.".gif"); 
                      //输出 
                      outputImg($picID."_".$picWidth.$picTypes); 
                      } 
              } 
          } 
        //判断文件是否存在大图 
        if(file_exists($picID."_0".$picTypes)) 
        { 
          $img_file = $picID."_0".$picTypes;  
          outputImg($img_file); 
        } 
        else 
        { 
            //如果不存在图片 
          $img_file = 'noDefaultImage.gif';  
          outputImg($img_file); 
        } 
    } 
    //输出图片 
    function outputImg($img_file) 
    { 
        $fp = fopen($img_file, 'rb'); 
          $content = fread($fp, filesize($img_file)); //二进制数据  
          fclose($fp); 
          header('Content-Type: image/gif'); 
          echo $content; 
        } 
    /**
    * 生成缩略图
    * $srcName----为原图片路径
    * $newWidth,$newHeight----分别缩略图的最大宽,高
    * $newName----为缩略图文件名(含路径)
    * @param string $srcName
    * @param int $newWidth
    * @param int $newHeight
    * @param string $newName
    * return viod
    */ 
    function resizeImg($srcName,$newWidth,$newHeight,$newName="") 
    { 
            if($newName=="") 
            { 
                    $nameArr=explode('.',$srcName); 
                    $expName=array_pop($nameArr); 
                    $expName=$expName; 
                    array_push($nameArr,$expName); 
                    $newName = implode('.',$nameArr); 
            } 
            $info = ""; 
            $data = getimagesize($srcName,$info); 
            switch ($data[2]) 
            { 
                    case 1: 
                            if(!function_exists("imagecreatefromgif")){ 
                                    echo "你的GD库不能使用GIF格式的图片,请使用Jpeg或PNG格式!返回"; 
                                    exit(); 
                            } 
                            $im = ImageCreateFromGIF($srcName); 
                            break
                    case 2: 
                            if(!function_exists("imagecreatefromjpeg")){ 
                                    echo "你的GD库不能使用jpeg格式的图片,请使用其它格式的图片!返回"; 
                                    exit(); 
                            } 
                            $im = ImageCreateFromJpeg($srcName); 
                            break; 
                    case 3: 
                            $im = ImageCreateFromPNG($srcName); 
                            break; 
            } 
            $srcW=ImageSX($im); 
            $srcH=ImageSY($im); 
            $newWidthH=$newWidth/$newHeight; 
            $srcWH=$srcW/$srcH; 
            if($newWidthH<=$srcWH){ 
                    $ftoW=$newWidth; 
                    $ftoH=$ftoW*($srcH/$srcW); 
            } 
            else{ 
                    $ftoH=$newHeight; 
                    $ftoW=$ftoH*($srcW/$srcH); 
            } 
            if($srcW>$newWidth||$srcH>$newHeight) 
            { 
                    if(function_exists("imagecreatetruecolor")) 
                    { 
                            @$ni = ImageCreateTrueColor($ftoW,$ftoH); 
                            if($ni) ImageCopyResampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH); 
                            else 
                            { 
                                    $ni=ImageCreate($ftoW,$ftoH); 
                                    ImageCopyResized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH); 
                            } 
                    } 
                    else 
                    { 
                            $ni=ImageCreate($ftoW,$ftoH); 
                            ImageCopyResized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH); 
                    } 
                    if(function_exists('imagejpeg')) ImageJpeg($ni,$newName); 
                    else ImagePNG($ni,$newName); 
                    ImageDestroy($ni); 
            } 
            ImageDestroy($im); 
    } 
?>