首页 > php教程 > php手册 > 正文

php生成缩略图(文本转换成图形)

php中文网
发布: 2016-06-13 09:48:34
原创
1022人浏览过

php生成缩略图(文本转换成图形) 这是一款办外开的经典的php生成缩略图类函数,文件灵活实用,可以生成任何风格的图片,并且 可以把文本转换成图形。

php教程生成缩略图(文本转换成图形)
 这是一款办外开的经典的php生成缩略图类函数,文件灵活实用,可以生成任何风格的图片,并且 可以把文本转换成图形。
 

copyright   : smart-info limited. all right reserved.  author      : jacky cheung  version     : 1.1  create date : 24 september 2008  last modify : 15 march 2009 */ class gd {  var $font_face   = "";  var $text   = "";  var $size    = 12;  var $color   = "#000000";  var $angle   = 0;  var $width   = 0;  var $height   = 0;  var $line_height = 0;    var $type   = "png";  var $chmod   = 0777;  var $bg_color  = "#ffffff";  var $quality  = 95;  var $antialias  = true;    var $x    = 0;  var $y    = 0;    /*___| convert text to image |___*/   public function text2image ( $font_face="", $text="", $attributes=false, $width=0, $all=false )   {    $this->font_face  = $font_face;    $this->text   = $text;    $this->width  = $width;    $this->size   = 12;    $this->color  = "#000000";    $this->angle  = 0;    $this->line_height = 0;    $this->setprop ( $attributes );        if ( $this->width == 0 )    {     return $this->convert_text2image ( $this->text, $this->check_text_width( $this->text ) );    } else {     // word wrap     if ( $all === false )     {      $text = split(" ", $this->text);      $text = $this->word_wrap($this->text, $this->width, "");      $text = split("", $text );     } else if ( $all === true ) {      $temp = array();      for ( $i=0; $itext); $i++ )      {       array_push ( $temp, mb_substr($this->text, $i, 1, "utf-8") );      }      $text = array();      $count_width = 0;      $i = 0;      foreach ( $temp as $k => $t )      {       $prop = $this->check_text_width($t);       if ( $count_width + floatval($prop["width"]) width )       {        $text[$i] = $text[$i] . $t;        $count_width += floatval($prop["width"]);       } else {        $count_width = 0;        $i++;        $text[$i] = "";       }      }     }          $img = array();     foreach ( $text as $k => $t )     {      $img[$k] = $this->convert_text2image ( $t,  $this->check_text_width( $t ) );     }          $w = 0;     $h = 0;     foreach ( $img as $k => $v )     {      $w = (imagesx($img[$k]) > $w) ? imagesx($img[$k]) : $w;      if ($this->line_height == 0 ) $h += imagesy($img[$k]);      else $h += ($k line_height : imagesy($img[$k]);     }          $base_img = $this->createtransparent($w, $h);     $locy = 0;     foreach ( $img as $k => $v )     {      if ($k > 0)      {       $locy = ($this->line_height == 0) ? $locy + imagesy($img[$k]) : $locy + $this->line_height;      }      $base_img = $this->attachgdimage ( $img[$k], $base_img, array ("x"=>0, "y"=>$locy) );     }     return $base_img;    }   }   private function word_wrap( $str, $width, $break )   {    $formatted = '';    $position = -1;    $prev_position = 0;    $last_line = -1;        /// looping the string stop at each space    while( $position = mb_stripos( $str, " ", ++$position, 'utf-8' ) ) {     if( $position > $last_line + $width + 1 ) {      $formatted.= mb_substr( $str, $last_line + 1, $prev_position - $last_line - 1, 'utf-8' ).$break;      $last_line = $prev_position;     }     $prev_position = $position;    }        /// adding last line without the break    $formatted.= mb_substr( $str, $last_line + 1, mb_strlen( $str ), 'utf-8' );    return $formatted;   }   public function convert_text2image ( $text, $prop )   {    $im   = imagecreatetruecolor ( $prop["width"], $prop["height"] );    $rgb   = $this->getrgb ( $this->color );    $color   = imagecolorallocate ( $im, $rgb["red"], $rgb["green"], $rgb["blue"] );    $img   = $this->createtransparent ( $prop["width"], $prop["height"] );    imagettftext ( $img, $this->size, $this->angle, 0, $prop["height"] - abs ( $prop["top"] ), $color, $this->font_face, $text );    return $img;   }   public function check_text_width ( $text )   {    $prop = array();    $bbox    = imagettfbbox ( $this->size, $this->angle, $this->font_face, $text );    $prop["left"]  = $bbox[0];    $prop["right"]  = $bbox[2];    $prop["top"] = $bbox[1];    $prop["bottom"] = $bbox[7];    $padding  = 2;       $prop["width"]  = abs($prop["left"]) + abs($prop["right"])  + $padding;    $prop["height"] = abs($prop["top"])  + abs($prop["bottom"]) + $padding;        return $prop;   }  /*___| save to image file |___*/   public function save($gdimage, $filename, $attributes=false)   {    $this->type   = "png";    $this->chmod   = 0777;    $this->bg_color  = "#ffffff";    $this->quality  = 95;    $this->antialias = true;        $this->setprop ( $attributes );        // process    switch ( strtolower ( $this->type ) )    {     case "jpeg":     case "jpg":      $gdimage = $this->createbackground($gdimage, imagesx($gdimage), imagesy($gdimage));      imagejpeg ( $gdimage, $filename, $this->quality );      break;     case "gif":      $gdimage = $this->createbackground($gdimage, imagesx($gdimage), imagesy($gdimage));      imagegif ( $gdimage, $filename );      break;        case "png":     default :      imagepng ( $gdimage, $filename );      break;    }    chmod ( $filename, $this->chmod );   }  /*___| create gd background image |___*/   public function createbackground($gdimage, $width, $height)   {    $img = imagecreatetruecolor ( $width, $height );    $rgb = $this->getrgb ( $this->bg_color );    $color = imagecolorallocate ( $img, $rgb["red"], $rgb["green"], $rgb["blue"] );    imagefill ( $img, 0, 0, $color );    imagecopyresampled ( $img, $gdimage, 0, 0, 0, 0, $width, $height, $width, $height );    return $img;   }  /*___| create gd transparent image |___*/   public function createtransparent($width, $height)   {    $img = imagecreatetruecolor($width, $height);    imagealphablending($img, false);    imagesavealpha($img, true);    $transparent = imagecolorallocatealpha($img, 0, 0, 0, 127);    imagefilledrectangle($img, 0, 0, $width, $height, $transparent);    imagecopyresampled($img, $img, 0, 0, 0, 0, $width, $height, $width, $height);    return $img;   }    /*___| load image |___*/   public function createimagefrom($filename, $alpha=true)   {    if ( function_exists ( "exif_imagetype" ) )    {     if ( exif_imagetype ( $filename )   == imagetype_jpeg ) { return $this->createfromjpeg ( $filename ); }     else if ( exif_imagetype ( $filename )  == imagetype_gif  ) { return $this->createfromgif  ( $filename ); }     else if ( exif_imagetype ( $filename )  == imagetype_png  ) { return $this->createfrompng  ( $filename, $alpha ); }    }    else    {     if ( strstr ( strtoupper ( $filename )  , ".jpg" )  || strstr ( strtoupper ( $filename ), ".jpeg" )) { return $this->createfromjpeg ( $filename ); }     else if ( strstr ( strtoupper ( $filename ) , ".gif" )) { return $this->createfromgif ( $filename ); }     else if ( strstr ( strtoupper ( $filename ) , ".png" )) { return $this->createfrompng ( $filename, $alpha ); }    }    return false;   }   private function createfromjpeg ( $filename ) { return imagecreatefromjpeg ( $filename ); }   private function createfromgif  ( $filename ) { return imagecreatefromgif  ( $filename ); }   private function createfrompng  ( $filename, $alpha=true )   {    if ( $alpha )    {     list ( $width, $height ) = getimagesize ( $filename );     $png_img = imagecreatefrompng ( $filename );     $img = imagecreatetruecolor ( $width, $height );     imagealphablending ( $img, false );     imagesavealpha ( $img, true );     imagecopyresampled ( $img, $png_img, 0, 0, 0, 0, $width, $height, $width, $height );    } else {     $img = imagecreatefrompng ( $filename );    }     return $img;   }      /*___| attach background image |___*/   public function attachbackgroundimage ( $gdimage, $filename, $attributes=false )   {    $this->x = 0;    $this->y = 0;    $this->setprop ( $attributes );       $img = $this->createimagefrom ( $filename );    imagecopyresampled ( $img, $gdimage, $this->x, $this->y, 0, 0, imagesx($gdimage), imagesy($gdimage), imagesx($gdimage), imagesy($gdimage) );    return $img;   }  /*___| attach image |___*/   public function attachimage ( $source, $target, $filename, $image_attributes=false, $attributes=false )   {    $source_img = $this->createimagefrom ( $source );    $target_img = $this->attachbackgroundimage ( $source_img, $target, $attributes );    $this->save ( $target_img, $filename, $image_attributes );   }       /*___| attach gd image resource |___*/   public function attachgdimage ( $gd_source, $gd_target, $attributes=false )   {    $this->x  = 0;    $this->y  = 0;    $this->width = 0;    $this->height = 0;    $this->setprop ( $attributes );        imagealphablending($gd_target, true );    imagealphablending($gd_source, true );    imagecopy ( $gd_target, $gd_source, $this->x, $this->y, 0, 0, imagesx($gd_source), imagesy($gd_source) );    return $gd_target;   }      /*___| get rgb color |___*/   public function getrgb($hex)   {    $rgb["red"]   = hexdec ( substr ( $hex, 1, 2 ) ) ;    $rgb["green"] = hexdec ( substr ( $hex, 3, 2 ) ) ;    $rgb["blue"]  = hexdec ( substr ( $hex, 5, 2 ) ) ;    return $rgb;   }      /*___| set properties |___*/    private function setprop ( $attributes=false )   {    if ( $attributes ) { foreach  ( $attributes as $key => $value ) { $k = strtoupper ( $key ); $this->$k = $value; } }   } }

//调用 方法

$imgresize = new imagetransform();
$imgresize->sourcefile = $source.$file;
$imgresize->targetfile = $destination.$file;
$imgresize->chmodvalue = 0777; 
$imgresize->resizetowidth = $tw;
$imgresize->resizetoheight = $th;
$imgresize->jpegoutputquality = 100;
$imgresize->resizeifsmaller = false;
$imgresize->resize();

?>

相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号