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

php生成图片缩略图功能示例

发布:smiling 来源: PHP粉丝网  添加日期:2018-08-02 16:59:05 浏览: 评论:0 

本文实例讲述了php生成图片缩略图功能。分享给大家供大家参考,具体如下:

完整代码如下:

  1. <?php 
  2. /* 
  3.  * Created on 2011-3-18 
  4.  * 
  5.  * To change the template for this generated file go to 
  6.  * Window - Preferences - PHPeclipse - PHP - Code Templates 
  7. */ 
  8. /*构造函数-生成缩略图+水印,参数说明: 
  9. $srcFile-图片文件名, 
  10. $dstFile-另存文件名, 
  11. $markwords-水印文字, 
  12. $markimage-水印图片, 
  13. $dstW-图片保存宽度, 
  14. $dstH-图片保存高度, 
  15. $rate-图片保存品质*/ 
  16. makethumb("1.jpg","aa/b.jpg","50","50"); 
  17. functionmakethumb($srcFile,$dstFile,$dstW,$dstH,$rate= 100,$markwords= null,$markimage= null) { 
  18.   $data=GetImageSize($srcFile); 
  19.   switch($data[2]) { 
  20.     case1: 
  21.       $im= @ImageCreateFromGIF($srcFile); 
  22.     break
  23.     case2: 
  24.       $im= @ImageCreateFromJPEG($srcFile); 
  25.     break
  26.     case3: 
  27.       $im= @ImageCreateFromPNG($srcFile); 
  28.     break
  29.   } 
  30.   if(!$im)returnFalse; 
  31.   $srcW= ImageSX($im); 
  32.   $srcH= ImageSY($im); 
  33.   $dstX= 0; 
  34.   $dstY= 0; 
  35.   if($srcW*$dstH>$srcH*$dstW) { 
  36.     $fdstH=round($srcH*$dstW/$srcW); 
  37.     $dstY=floor(($dstH-$fdstH) / 2); 
  38.     $fdstW=$dstW
  39.   }else
  40.     $fdstW=round($srcW*$dstH/$srcH); 
  41.     $dstX=floor(($dstW-$fdstW) / 2); 
  42.     $fdstH=$dstH
  43.   } 
  44.   $ni= ImageCreateTrueColor($dstW,$dstH); 
  45.   $dstX= ($dstX< 0) ? 0 :$dstX
  46.   $dstY= ($dstX< 0) ? 0 :$dstY
  47.   $dstX= ($dstX> ($dstW/ 2)) ?floor($dstW/ 2) :$dstX
  48.   $dstY= ($dstY> ($dstH/ 2)) ?floor($dstH/ s) :$dstY
  49.   $white= ImageColorAllocate($ni, 255, 255, 255); 
  50.   $black= ImageColorAllocate($ni, 0, 0, 0); 
  51.   imagefilledrectangle($ni, 0, 0,$dstW,$dstH,$white);// 填充背景色 
  52.   ImageCopyResized($ni,$im,$dstX,$dstY, 0, 0,$fdstW,$fdstH,$srcW,$srcH); 
  53.   if($markwords!= null) { 
  54.     $markwords= iconv("gb2312","UTF-8",$markwords); 
  55.     //转换文字编码 
  56.     ImageTTFText($ni, 20, 30, 450, 560,$black,"simhei.ttf",$markwords);//写入文字水印 
  57.     //参数依次为,文字大小|偏转度|横坐标|纵坐标|文字颜色|文字类型|文字内容 
  58.       
  59.   }elseif($markimage!= null) { 
  60.     $wimage_data=GetImageSize($markimage); 
  61.     switch($wimage_data[2]) { 
  62.       case1: 
  63.         $wimage= @ImageCreateFromGIF($markimage); 
  64.       break
  65.       case2: 
  66.         $wimage= @ImageCreateFromJPEG($markimage); 
  67.       break
  68.       case3: 
  69.         $wimage= @ImageCreateFromPNG($markimage); 
  70.       break
  71.     } 
  72.     imagecopy($ni,$wimage, 500, 560, 0, 0, 88, 31);//写入图片水印,水印图片大小默认为88*31 
  73.     imagedestroy($wimage); 
  74.   } //phpfensi.com 
  75.   ImageJpeg($ni,$dstFile,$rate); 
  76.   ImageJpeg($ni,$srcFile,$rate); 
  77.   imagedestroy($im); 
  78.   imagedestroy($ni); 
  79. ?>

Tags: php生成图片 缩略图

分享到: