亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

php生成縮略圖,文本轉換成圖形

2024-09-04 11:44:20
字體:
來源:轉載
供稿:網友

這是一款老外的經典的php生成縮略圖類函數,文件靈活實用,可以生成任何風格的圖片,并且可以把文本轉換成圖形.

php生成縮略圖,文本轉換成圖形實例代碼如下:

  1. copyright   : smart-info limited. all right reserved. 
  2.  author      : jacky cheung 
  3.  version     : 1.1 
  4.  create date : 24 september 2008 
  5.  last modify : 15 march 2009 
  6. */ 
  7.  
  8. class gd 
  9.  var $font_face   = ""
  10.  var $text   = ""
  11.  var $size    = 12; 
  12.  var $color   = "#000000"
  13.  var $angle   = 0; 
  14.  
  15.  var $width   = 0; 
  16.  var $height   = 0; 
  17.  var $line_height = 0; 
  18.   
  19.  var $type   = "png"
  20.  var $chmod   = 0777; 
  21.  var $bg_color  = "#ffffff"
  22.  var $quality  = 95; 
  23.  var $antialias  = true; 
  24.   
  25.  var $x    = 0; 
  26.  var $y    = 0; 
  27.   
  28.  
  29.  /*___| convert text to image |___*/ 
  30.   public function text2image ( $font_face=""$text=""$attributes=false, $width=0, $all=false ) 
  31.   { 
  32.    $this->font_face  = $font_face
  33.    $this->text   = $text
  34.    $this->width  = $width
  35.    $this->size   = 12; 
  36.    $this->color  = "#000000"
  37.    $this->angle  = 0; 
  38.    $this->line_height = 0; 
  39.    $this->setprop ( $attributes ); 
  40.     
  41.    if ( $this->width == 0 ) 
  42.    { 
  43.     return $this->convert_text2image ( $this->text, $this->check_text_width( $this->text ) ); 
  44.    } else { 
  45.     // word wrap 
  46.     if ( $all === false ) 
  47.     { 
  48.      $text = split(" "$this->text); 
  49.      $text = $this->word_wrap($this->text, $this->width, "<br>"); 
  50.      $text = split("<br>"$text ); 
  51.     } else if ( $all === true ) { 
  52.      $temp = array(); 
  53.      for ( $i=0; $i<strlen($this->text); $i++ ) 
  54.      { 
  55.       array_push ( $temp, mb_substr($this->text, $i, 1, "utf-8") ); 
  56.      } 
  57.      $text = array(); 
  58.      $count_width = 0; 
  59.      $i = 0; 
  60.      foreach ( $temp as $k => $t ) 
  61.      { 
  62.       $prop = $this->check_text_width($t); 
  63.       if ( $count_width + floatval($prop["width"]) < $this->width ) 
  64.       { 
  65.        $text[$i] = $text[$i] . $t
  66.        $count_width += floatval($prop["width"]); 
  67.       } else { 
  68.        $count_width = 0; 
  69.        $i++; 
  70.        $text[$i] = ""
  71.       } 
  72.      } 
  73.     } 
  74.      
  75.     $img = array(); 
  76.     foreach ( $text as $k => $t ) 
  77.     { 
  78.      $img[$k] = $this->convert_text2image ( $t,  $this->check_text_width( $t ) ); 
  79.     } 
  80.      
  81.     $w = 0; 
  82.     $h = 0; 
  83.     foreach ( $img as $k => $v ) 
  84.     { 
  85.      $w = (imagesx($img[$k]) > $w) ? imagesx($img[$k]) : $w
  86.  
  87.      if ($this->line_height == 0 ) $h += imagesy($img[$k]); 
  88.      else $h += ($k < count($img)-1) ? $this->line_height : imagesy($img[$k]); 
  89.     } 
  90.      
  91.     $base_img = $this->createtransparent($w$h); 
  92.     $locy = 0; 
  93.     foreach ( $img as $k => $v ) 
  94.     { 
  95.      if ($k > 0) 
  96.      { 
  97.       $locy = ($this->line_height == 0) ? $locy + imagesy($img[$k]) : $locy + $this->line_height; 
  98.      } 
  99.      $base_img = $this->attachgdimage ( $img[$k], $base_imgarray ("x"=>0, "y"=>$locy) ); 
  100.     } 
  101.     return $base_img
  102.    } 
  103.   } 
  104.   private function word_wrap( $str$width$break )  
  105.   {  
  106.    $formatted = '';  
  107.    $position = -1;  
  108.    $prev_position = 0;  
  109.    $last_line = -1;  
  110.     
  111.    /// looping the string stop at each space  
  112.    while$position = mb_stripos( $str" ", ++$position'utf-8' ) ) {  
  113.     if$position > $last_line + $width + 1 ) {  
  114.      $formatted.= mb_substr( $str$last_line + 1, $prev_position - $last_line - 1, 'utf-8' ).$break;  
  115.      $last_line = $prev_position;  
  116.     }  
  117.     $prev_position = $position;  
  118.    }  
  119.     
  120.    /// adding last line without the break  
  121.    $formatted.= mb_substr( $str$last_line + 1, mb_strlen( $str ), 'utf-8' );  
  122.    return $formatted;  
  123.   } 
  124.  
  125.  
  126.   public function convert_text2image ( $text$prop ) 
  127.   { 
  128.    $im   = imagecreatetruecolor ( $prop["width"], $prop["height"] ); 
  129.    $rgb   = $this->getrgb ( $this->color ); 
  130.    $color   = imagecolorallocate ( $im$rgb["red"], $rgb["green"], $rgb["blue"] ); 
  131.    $img   = $this->createtransparent ( $prop["width"], $prop["height"] ); 
  132.    imagettftext ( $img$this->size, $this->angle, 0, $prop["height"] - abs ( $prop["top"] ), $color$this->font_face, $text ); 
  133.    return $img
  134.   } 
  135.   public function check_text_width ( $text ) 
  136.   { 
  137.    $prop = array(); 
  138.    $bbox    = imagettfbbox ( $this->size, $this->angle, $this->font_face, $text ); 
  139.    $prop["left"]  = $bbox[0]; 
  140.    $prop["right"]  = $bbox[2]; 
  141.    $prop["top"] = $bbox[1]; 
  142.    $prop["bottom"] = $bbox[7]; 
  143.    $padding  = 2; 
  144.    
  145.    $prop["width"]  = abs($prop["left"]) + abs($prop["right"])  + $padding
  146.    $prop["height"] = abs($prop["top"])  + abs($prop["bottom"]) + $padding
  147.     
  148.    return $prop
  149.   } 
  150.  
  151.  
  152.  /*___| save to image file |___*/ 
  153.   public function save($gdimage$filename$attributes=false) 
  154.   { 
  155.    $this->type   = "png"
  156.    $this->chmod   = 0777; 
  157.    $this->bg_color  = "#ffffff"
  158.    $this->quality  = 95; 
  159.    $this->antialias = true; 
  160.     
  161.    $this->setprop ( $attributes ); 
  162.     
  163.    // process 
  164.    switch ( strtolower ( $this->type ) ) 
  165.    { 
  166.     case "jpeg"
  167.     case "jpg"
  168.      $gdimage = $this->createbackground($gdimage, imagesx($gdimage), imagesy($gdimage)); 
  169.      imagejpeg ( $gdimage$filename$this->quality ); 
  170.      break
  171.     case "gif"
  172.      $gdimage = $this->createbackground($gdimage, imagesx($gdimage), imagesy($gdimage)); 
  173.      imagegif ( $gdimage$filename ); 
  174.      break;    
  175.     case "png"
  176.     default : 
  177.      imagepng ( $gdimage$filename ); 
  178.      break
  179.    } 
  180.    chmod ( $filename$this->chmod ); 
  181.   } 
  182.  
  183.  
  184.  /*___| create gd background image |___*/ 
  185.   public function createbackground($gdimage$width$height
  186.   { 
  187.    $img = imagecreatetruecolor ( $width$height ); 
  188.    $rgb = $this->getrgb ( $this->bg_color ); 
  189.    $color = imagecolorallocate ( $img$rgb["red"], $rgb["green"], $rgb["blue"] ); 
  190.    imagefill ( $img, 0, 0, $color ); 
  191.    imagecopyresampled ( $img$gdimage, 0, 0, 0, 0, $width$height$width$height ); 
  192.    return $img
  193.   } 
  194.  
  195.  
  196.  /*___| create gd transparent image |___*/ 
  197.   public function createtransparent($width$height
  198.   { 
  199.    $img = imagecreatetruecolor($width$height); 
  200.    imagealphablending($img, false); 
  201.    imagesavealpha($img, true); 
  202.    $transparent = imagecolorallocatealpha($img, 0, 0, 0, 127); 
  203.    imagefilledrectangle($img, 0, 0, $width$height$transparent); 
  204.    imagecopyresampled($img$img, 0, 0, 0, 0, $width$height$width$height); 
  205.    return $img
  206.   } 
  207.  
  208.   
  209.  /*___| load image |___*/ 
  210.   public function createimagefrom($filename$alpha=true) 
  211.   { 
  212.    if ( function_exists ( "exif_imagetype" ) ) 
  213.    { 
  214.     if ( exif_imagetype ( $filename )   == imagetype_jpeg ) { return $this->createfromjpeg ( $filename ); } 
  215.     else if ( exif_imagetype ( $filename )  == imagetype_gif  ) { return $this->createfromgif  ( $filename ); } 
  216.     else if ( exif_imagetype ( $filename )  == imagetype_png  ) { return $this->createfrompng  ( $filename$alpha ); } 
  217.    } 
  218.    else 
  219.    { 
  220.     if ( strstr ( strtoupper ( $filename )  , ".jpg" )  || strstr ( strtoupper ( $filename ), ".jpeg" )) { return $this->createfromjpeg ( $filename ); } 
  221.     else if ( strstr ( strtoupper ( $filename ) , ".gif" )) { return $this->createfromgif ( $filename ); } 
  222.     else if ( strstr ( strtoupper ( $filename ) , ".png" )) { return $this->createfrompng ( $filename$alpha ); } 
  223.    } 
  224.    return false; 
  225.   } 
  226.   private function createfromjpeg ( $filename ) { return imagecreatefromjpeg ( $filename ); } 
  227.   private function createfromgif  ( $filename ) { return imagecreatefromgif  ( $filename ); } 
  228.   private function createfrompng  ( $filename$alpha=true ) 
  229.   { 
  230.    if ( $alpha ) 
  231.    { 
  232.     list ( $width$height ) = getimagesize ( $filename ); 
  233.     $png_img = imagecreatefrompng ( $filename ); 
  234.     $img = imagecreatetruecolor ( $width$height ); 
  235.     imagealphablending ( $img, false ); 
  236.     imagesavealpha ( $img, true ); 
  237.     imagecopyresampled ( $img$png_img, 0, 0, 0, 0, $width$height$width$height ); 
  238.    } else { 
  239.     $img = imagecreatefrompng ( $filename ); 
  240.    }  
  241.    return $img
  242.   } 
  243.   
  244.   
  245.  /*___| attach background image |___*/ 
  246.   public function attachbackgroundimage ( $gdimage$filename$attributes=false ) 
  247.   { 
  248.    $this->x = 0; 
  249.    $this->y = 0; 
  250.    $this->setprop ( $attributes ); 
  251.    
  252.    $img = $this->createimagefrom ( $filename ); 
  253.    imagecopyresampled ( $img$gdimage$this->x, $this->y, 0, 0, imagesx($gdimage), imagesy($gdimage), imagesx($gdimage), imagesy($gdimage) ); 
  254.    return $img
  255.   } 
  256.  
  257.  
  258.  /*___| attach image |___*/ 
  259.   public function attachimage ( $source$target$filename$image_attributes=false, $attributes=false ) 
  260.   { 
  261.    $source_img = $this->createimagefrom ( $source ); 
  262.    $target_img = $this->attachbackgroundimage ( $source_img$target$attributes ); 
  263.    $this->save ( $target_img$filename$image_attributes ); 
  264.   } 
  265.    
  266.   
  267.  /*___| attach gd image resource |___*/ 
  268.   public function attachgdimage ( $gd_source$gd_target$attributes=false ) 
  269.   { 
  270.    $this->x  = 0; 
  271.    $this->y  = 0; 
  272.    $this->width = 0; 
  273.    $this->height = 0; 
  274.    $this->setprop ( $attributes ); 
  275.     
  276.    imagealphablending($gd_target, true ); 
  277.    imagealphablending($gd_source, true ); 
  278.    imagecopy ( $gd_target$gd_source$this->x, $this->y, 0, 0, imagesx($gd_source), imagesy($gd_source) ); 
  279.    return $gd_target
  280.   } 
  281.   
  282.   
  283.  /*___| get rgb color |___*/ 
  284.   public function getrgb($hex
  285.   { 
  286.    $rgb["red"]   = hexdec ( substr ( $hex, 1, 2 ) ) ; 
  287.    $rgb["green"] = hexdec ( substr ( $hex, 3, 2 ) ) ; 
  288.    $rgb["blue"]  = hexdec ( substr ( $hex, 5, 2 ) ) ; 
  289.    return $rgb
  290.   } 
  291.   
  292.   
  293.  /*___| set properties |___*/  
  294.   private function setprop ( $attributes=false ) 
  295.   { 
  296.    if ( $attributes ) { foreach  ( $attributes as $key => $value ) { $k = strtoupper ( $key ); $this->$k = $value; } } 
  297.   } 
  298. //開源代碼Vevb.com 
  299. //調用 方法代碼如下: 
  300.  
  301. $imgresize = new imagetransform(); 
  302. $imgresize->sourcefile = $source.$file
  303. $imgresize->targetfile = $destination.$file
  304. $imgresize->chmodvalue = 0777;  
  305. $imgresize->resizetowidth = $tw
  306. $imgresize->resizetoheight = $th
  307. $imgresize->jpegoutputquality = 100; 
  308. $imgresize->resizeifsmaller = false; 
  309. $imgresize->resize(); 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品情侣自拍| 国产日韩欧美电影在线观看| 精品偷拍一区二区三区在线看| 国产一区二区三区在线观看网站| 久久久视频精品| 91日本在线视频| 亚洲风情亚aⅴ在线发布| 伊人久久免费视频| 国产女人18毛片水18精品| 欧美裸体视频网站| 日韩电影在线观看免费| 狠狠躁天天躁日日躁欧美| 欧美做受高潮电影o| 亚洲日本欧美中文幕| 久热精品视频在线免费观看| 91免费精品视频| 欧美在线视频免费播放| 精品夜色国产国偷在线| 国产婷婷成人久久av免费高清| 国产精品中文字幕在线| 性色av一区二区三区| 国产成人中文字幕| 日本高清久久天堂| 久久人人爽国产| www日韩欧美| 狠狠躁天天躁日日躁欧美| 国产精品主播视频| 亚洲欧美日韩精品久久| 欧美亚洲激情视频| 亚洲免费一级电影| 久久免费视频网| 亚洲激情视频网站| 日产精品久久久一区二区福利| 国产视频精品免费播放| 久久国产精品电影| 色综合男人天堂| 中日韩午夜理伦电影免费| 97在线看免费观看视频在线观看| 亚洲午夜女主播在线直播| 91久久久久久| 亚洲国模精品私拍| 亚洲精品99久久久久中文字幕| 欧美亚洲视频在线看网址| www国产精品视频| 日本国产高清不卡| 26uuu日韩精品一区二区| 成人在线免费观看视视频| 精品无人区太爽高潮在线播放| 亚洲视频欧美视频| 一本色道久久88综合亚洲精品ⅰ| 欧美日韩电影在线观看| 最新91在线视频| 日韩少妇与小伙激情| 精品一区二区三区电影| 亚洲天堂免费观看| 亚洲成人精品av| 亚洲精品在线91| 亚洲精品日韩欧美| 人人做人人澡人人爽欧美| 欧美日韩激情视频| 国产精品视频地址| 精品久久久久久亚洲精品| 亚洲91精品在线| 永久免费精品影视网站| 国产成人精品日本亚洲| 在线免费看av不卡| 久久91精品国产| 国产成人精品在线播放| 亚洲三级黄色在线观看| 97精品国产97久久久久久免费| 亚洲精选在线观看| 青青草国产精品一区二区| 91在线网站视频| 亚洲欧美在线一区| 精品国偷自产在线视频| 国产亚洲精品高潮| 欧美亚洲另类视频| 欧美成人精品在线观看| 久久综合国产精品台湾中文娱乐网| 久久久久久久久久国产| 国产精品嫩草影院一区二区| 欧美激情伊人电影| 久久久精品网站| 91精品久久久久久久久不口人| 国产成人精品亚洲精品| 97精品伊人久久久大香线蕉| 国产精品久久久久久久久久久久久| 久久亚洲成人精品| 亚洲欧美综合图区| 国产成人综合av| 日韩美女视频免费在线观看| 亚洲视频在线免费观看| 夜夜嗨av色综合久久久综合网| 国产精品1区2区在线观看| 亚洲国产古装精品网站| 亚洲男人第一网站| 成人国内精品久久久久一区| 国产精品久久一| 成人伊人精品色xxxx视频| 成人免费看吃奶视频网站| 亚洲国产三级网| 久久久精品一区二区三区| 欧美色另类天堂2015| 日韩av在线不卡| 国产成人精品国内自产拍免费看| 欧洲亚洲妇女av| 日本精品久久久久影院| 亚洲精品mp4| 欧美激情一区二区三区高清视频| 欧美色视频日本高清在线观看| 不卡av日日日| 中文字幕日本精品| 欧美视频在线免费| 国产日本欧美一区二区三区在线| 欧美裸体xxxx极品少妇软件| 成人激情视频小说免费下载| xxxxx成人.com| 亚洲第一福利在线观看| 久久久成人的性感天堂| 欧美激情亚洲一区| 日韩一区二区三区xxxx| 亚洲v日韩v综合v精品v| 色天天综合狠狠色| 精品国产美女在线| 成人网址在线观看| 日韩av有码在线| 国产69精品久久久久9| 68精品国产免费久久久久久婷婷| 亚洲国产日韩欧美在线动漫| 欧美最猛性xxxxx免费| 亚洲日韩中文字幕| 欧美专区国产专区| 欧美一级黑人aaaaaaa做受| 热re99久久精品国产66热| 日韩中文字幕在线播放| 国产999在线观看| 国产精品99久久久久久久久| 亚洲最大成人在线| 欧美在线欧美在线| 国产91热爆ts人妖在线| 精品国产91久久久久久| 国产日本欧美一区二区三区| 中文在线资源观看视频网站免费不卡| 成人在线免费观看视视频| 亚洲日韩中文字幕| 插插插亚洲综合网| 欧美中文字幕视频在线观看| 国产精品入口福利| 国产精品久久久久久久久久久久久| 日本精品久久久| 国产性猛交xxxx免费看久久| 欧美日韩国产精品专区| 亚洲jizzjizz日本少妇| 91禁国产网站| 69久久夜色精品国产7777| 欧美一区在线直播| 亚洲国产精品久久久久久| yw.139尤物在线精品视频| 国产成人综合一区二区三区| 成人黄色免费在线观看| 国产精品午夜国产小视频| 亚洲视频一区二区三区| 精品福利在线视频| 成人久久久久爱|