ホームページ >バックエンド開発 >PHPチュートリアル >PHP は画像からサムネイルをインテリジェントに生成します_PHP チュートリアル

PHP は画像からサムネイルをインテリジェントに生成します_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:46:06931ブラウズ

PHP は画像からサムネイルをインテリジェントに生成し、画像のサイズに応じて同じ比率の画像を自動的に生成します。必要な友達はそれを参照できます。

コードは次のとおりです コードをコピー

/************************************** *作者: 夢見る蠍 (belucly)
*完了時刻: 2006-12-18
*クラス名: CreatMiniature
*機能: さまざまな種類のサムネイルを生成します
*基本パラメータ: $srcFile、$echoType
*メソッドで使用されるパラメータ:
$ Tofile、生成されたファイル
$toW、生成された幅
                                                                                            $ BK1、背景色パラメータは最高の255です
$bk2、背景色パラメータ
$bk3, 背景色パラメータ

※例:

include("thumb.php")
$cm=新しいCreatMiniature(); $cm->SetVar("1.jpg","ファイル"); $cm->歪み("dis_bei.jpg",150,200); $cm->比例配分("pro_bei.jpg",150,200); $cm->Cut("cut_bei.jpg",150,200); $cm->BackFill("fill_bei.jpg",150,200);
***************************************/

クラスCreatMiniature
{
//パブリック変数
var $srcFile=""; var $echoType; // 出力画像タイプ、リンク -- ファイルとして保存されません -- ファイルとして保存されます
var $im="" //一時変数
; var $srcW="" //元の画像の幅
;                                                                                                                                                 
//変数を設定して初期化します
関数 SetVar($srcFile,$echoType)
{
$this->srcFile=$srcFile; $this->echoType=$echoType;
$info = ""; $data = GetImageSize($this->srcFile,$info); スイッチ ($data[2]) {
ケース 1:
If(!function_exists("imagecreatefromgif")){
Echo 「GD ライブラリでは GIF 形式の画像を使用できません。JPEG または PNG 形式を使用してください。 & Lt; a href = 'javascript: go (-1);' & gt; return & lt;/a & gt;」 終了();                                                                                $this->im = ImageCreateFromGIF($this->srcFile); 休憩
ケース 2:
If(!function_exists("imagecreatefromjpeg")){
echo "GD ライブラリでは jpeg 形式の画像を使用できません。他の形式の画像を使用してください。Return"; 終了();                                                                            $this->im = ImageCreateFromJpeg($this->srcFile); 休憩
ケース 3:
$this->im = ImageCreateFromPNG($this->srcFile); 休憩
}
$this->srcW=ImageSX($this->im); $this->srcH=ImageSY($this->im); }

//歪んだサムネイルを生成
関数の歪み($toFile,$toW,$toH​​)
{
$cImg=$this->CreatImage($this->im,$toW,$toH​​,0,0,0,0,$this->srcW,$this->srcH); return $this->EchoImage($cImg,$toFile); 画像破壊($cImg); }

//拡大縮小されたサムネイルを生成します
関数比例配分($toFile,$toW,$toH​​)
{
$toWH=$toW/$toH; $srcWH=$this->srcW/$this->srcH; if($toWH                                                                  $ftoW=$toW; $ftoH=$ftoW*($this->srcH/$this->srcW); }
                                                                          $ftoH=$toH; $ftoW=$ftoH*($this->srcW/$this->srcH); }
If($this->srcW>$toW||$this->srcH>$toH)
                                                                 $cImg=$this->CreatImage($this->im,$ftoW,$ftoH,0,0,0,0,$this->srcW,$this->srcH); return $this->EchoImage($cImg,$toFile); 画像破壊($cImg); }
その他
                                                                 $cImg=$this->CreatImage($this->im,$this->srcW,$this->srcH,0,0,0,0,$this->srcW,$this-> ;ソース); return $this->EchoImage($cImg,$toFile); 画像破壊($cImg); }
}

//最小限のトリミングされたサムネイルを生成します
関数カット($toFile,$toW,$toH​​)
{
$toWH=$toW/$toH; $srcWH=$this->srcW/$this->srcH; if($toWH                                                                     $ctoH=$toH;                $ctoW=$ctoH*($this->srcW/$this->srcH);
           }
           それ以外は
           {
               $ctoW=$toW;
               $ctoH=$ctoW*($this->srcH/$this->srcW);
           }
         $allImg=$this->CreatImage($this->im,$ctoW,$ctoH,0,0,0,0,$this->srcW,$this->srcH);
         $cImg=$this->CreatImage($allImg,$toW,$toH​​,0,0,($ctoW-$toW)/2,($ctoH-$toH)/2,$toW,$toH​​);
         return $this->EchoImage($cImg,$toFile);
         ImageDestroy($cImg);
         ImageDestroy($allImg);
     }
  
     //背景充填の缩图を生成
     関数 BackFill($toFile,$toW,$toH​​,$bk1=255,$bk2=255,$bk3=255)
     {
         $toWH=$toW/$toH;
         $srcWH=$this->srcW/$this->srcH;
         if($toWH          {
             $ftoW=$toW;
             $ftoH=$ftoW*($this->srcH/$this->srcW);
         }
         それ以外は
         {
               $ftoH=$toH;
               $ftoW=$ftoH*($this->srcW/$this->srcH);
         }
         if(function_exists("imagecreatetruecolor"))
         {
             @$cImg=ImageCreateTrueColor($toW,$toH​​);
             if(!$cImg)
             {
                 $cImg=ImageCreate($toW,$toH​​);
             }
         }
         それ以外は
         {
             $cImg=ImageCreate($toW,$toH​​);
         }
         $backcolor = imagecolorallocate($cImg, $bk1, $bk2, $bk3);        //充満した背景颜色
         ImageFilledRectangle($cImg,0,0,$toW,$toH​​,$backcolor);
         if($this->srcW>$toW||$this->srcH>$toH)
         {
             $proImg=$this->CreatImage($this->im,$ftoW,$ftoH,0,0,0,0,$this->srcW,$this->srcH);
             /*
              if($ftoW               {
                  ImageCopyMerge($cImg,$proImg,($toW-$ftoW)/2,0,0,0,$ftoW,$ftoH,100);
              }
              else if($ftoH               {
                  ImageCopyMerge($cImg,$proImg,0,($toH-$ftoH)/2,0,0,$ftoW,$ftoH,100);
              }
              */
             if($ftoW              {
                  ImageCopy($cImg,$proImg,($toW-$ftoW)/2,0,0,0,$ftoW,$ftoH);
             }
             else if($ftoH              {
                  ImageCopy($cImg,$proImg,0,($toH-$ftoH)/2,0,0,$ftoW,$ftoH);
             }
             それ以外は
             {
                  ImageCopy($cImg,$proImg,0,0,0,0,$ftoW,$ftoH);
             }
         }
         それ以外は
         {
              ImageCopyMerge($cImg,$this->im,($toW-$ftoW)/2,($toH-$ftoH)/2,0,0,$ftoW,$ftoH,100);
         }
         return $this->EchoImage($cImg,$toFile);
         ImageDestroy($cImg);
     }
     
  
     関数 CreatImage($img,$creatW,$creatH,$dstX,$dstY,$srcX,$srcY,$srcImgW,$srcImgH)
     {
         if(function_exists("imagecreatetruecolor"))
         {
             @$creatImg = ImageCreateTrueColor($creatW,$creatH);              if($creatImg)
                 ImageCopyResampled($creatImg,$img,$dstX,$dstY,$srcX,$srcY,$creatW,$creatH,$srcImgW,$srcImgH);
             それ以外は
             {
                 $creatImg=イメージ作成($creatW,$creatH);
                 ImageCopyResize($creatImg,$img,$dstX,$dstY,$srcX,$srcY,$creatW,$creatH,$srcImgW,$srcImgH);
             }
          }
          それ以外は
          {
             $creatImg=イメージ作成($creatW,$creatH);
             ImageCopyResize($creatImg,$img,$dstX,$dstY,$srcX,$srcY,$creatW,$creatH,$srcImgW,$srcImgH);
          }
          $createImg を返します。
     }
     
     //画像、リンク---画像、更新できません--更新できません
     関数 EchoImage($img,$to_File)
     {
         switch($this->echoType) {
             ケース「リンク」:
                 if(function_exists('imagejpeg')) return ImageJpeg($img);
それ以外の場合は ImagePNG($img) を返します。 休憩
ケース「ファイル」:
If(function_exists('imagejpeg')) return ImageJpeg($img,$to_File); それ以外の場合は ImagePNG($img,$to_File) を返します
休憩
}
}

}
?>

http://www.bkjia.com/PHPjc/632961.html

tru​​ehttp://www.bkjia.com/PHPjc/632961.html技術記事 PHP は画像からサムネイル画像をインテリジェントに生成し、画像のサイズに応じて同じ比率の画像を自動的に生成します。必要な友達はそれを参照できます。 コードは次のとおりです コードをコピーします ?php /******...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。