1. <?php  
  2.   
  3. function browser( $url$obj = ''$http_referer = ''$cookie = '' ){  
  4.     if ( emptyempty($url) ) return false;  
  5.     if (function_exists('curl_init')){  
  6.         $ch = curl_init();  
  7.         //curl_setopt($ch, CURLOPT_ENCODING, '');  
  8.         curl_setopt($ch, CURLOPT_URL,$url);  
  9.         curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);  
  10.         curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);  
  11.         curl_setopt($ch, CURLOPT_TIMEOUT,600);  
  12.         curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,15);  
  13.         curl_setopt($ch, CURLOPT_USERAGENT,"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:18.0) Gecko/20100101 Firefox/18.0");  
  14.         if ( $obj == 'HEADER' ){  
  15.             curl_setopt($ch, CURLOPT_HEADER, 1);  
  16.             curl_setopt($ch, CURLOPT_NOBODY, 1);  
  17.         }else{  
  18.             curl_setopt($ch, CURLOPT_HEADER,0);  
  19.         }  
  20.         if ( ! emptyempty($http_referer) ){  
  21.             curl_setopt ($ch, CURLOPT_REFERER,$http_referer);  
  22.         }  
  23.         if ( $cookie == 'COOKIE' ){  
  24.             curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');  
  25.             curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');  
  26.         }  
  27.         $response = curl_exec($ch);  
  28.         $http_info = curl_getinfo($ch);  
  29.         curl_close($ch);  
  30.         if ($http_info['http_code'] == 404){  
  31.             return false;  
  32.         }  
  33.     }  
  34.   
  35.     if ( @!$response && $obj == '' ){  
  36.         ini_set('user_agent','Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:17.0) Gecko/20100101 Firefox/17.0');  
  37.         $response = file_get_contents($url,false,stream_context_create(array('http' => array('method' => 'GET','timeout' => 10,'header' => "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:17.0) Gecko/20100101 Firefox/17.0rn"))));  
  38.     }  
  39.   
  40.     if ( $obj == 'OBJECT' )  
  41.         return array$response$http_info );  
  42.     elseif ( $obj == 'HEADER' )  
  43.         return $http_info;  
  44.     else  
  45.         return $response;  
  46. }  
  47.   
  48.   
  49. function fileputcontent($filename,$resouce,$binary = false){  
  50.     ifemptyempty($filename) || emptyempty($resouce) ) return false;  
  51.     if$binary )  
  52.         $mode = 'wb';  
  53.     else  
  54.         $mode = 'w';  
  55.     $handle = fopen($filename,$mode);  
  56.     if$count = fwrite($handle,$resouce)){  
  57.         fclose($handle);  
  58.         return true;  
  59.     }  
  60.     fclose($handle);  
  61.     return false;  
  62. }  
  63.   
  64. function saveFile($url,$dir = 'files',$prefix='',$path = '',$link = '',$http_referer = '' , $arr = array()){  
  65.     ifemptyempty($url) ) return false;  
  66.     if ( !emptyempty($arr) && str_replace($arr,'',$url) != $url ){  
  67.         continue;  
  68.     }  
  69.     if (substr($url,0,4) != 'http')  
  70.         $url = $prefix.$url;  
  71.     if ( $path == 'original' && $link == 'original' ) {  
  72.         $localfile = $dir . strchrstr_replace('http://','',$url) ,'/' );  
  73.     }else{  
  74.         $ext = (strrchr($url,'?')!='') ? strrchrstr_replacestrrchr($url,'?') ,'',$url ) ,'.') : strrchr($url,'.');  
  75.         $localfile = $dir . '/' . substr(md5($url),8,16) . $ext;  
  76.     }  
  77.     if ( !is_dir( dirname( $localfile ) ) ) mkDirs( dirname($localfile) );  
  78.     if( !file_exists($localfile) || !filesize($localfile) ){  
  79.         for($i=0;$i<3;$i++){  
  80.             if$response = browser($url ,''$http_referer) ){  
  81.                 file_put_contents($localfile,$response );  
  82.                 break;  
  83.             }  
  84.         }  
  85.     }  
  86.     if$link == 'original' ){  
  87.         return $url;  
  88.     }else{  
  89.         return $localfile;  
  90.     }  
  91. }  
  92.   
  93. function saveBodyPic($body$dir = 'pic',$prefix='',$path = '',$link = '',$http_referer = ''$arr = array() ) {  
  94.     ifemptyempty($body) )  
  95.         return false;  
  96.   
  97.     if ( strpos$dir,'|' ) !== false ) {  
  98.         $dirarr = explode( '|', $dir );  
  99.         $dir = $dirarr[0];  
  100.     }  
  101.     preg_match_all('/<img[^<>]+src=['"]([^s"']+)['"][^<>]*>/iU',$body,$img1); 
  102.     preg_match_all('/src=["']*([^s"']+jpg|png|gif)[s"']/iU',$body,$img2);  
  103.     preg_match_all('/<!--[thumb[([^>]*)]]-->/iU', $body$img3);  
  104.     preg_match_all('/<!--[middle[([^>]*)]]-->/iU', $body$img4);  
  105.     $img = array_uniquearray_merge ($img1[1],$img2[1],$img3[1],$img4[1] ) );  
  106.   
  107.     if( ! emptyempty$img ) && mkDirs( $dir ) ) {  
  108.   
  109.         $cannotfile = array('*',':','<','>','"','|','?','&');  
  110.         foreach ( $img as $item ){ 
  111.             if( str_replace($cannotfile,'',$item) != $item ){ 
  112.                 continue; 
  113.             } 
  114.             if ( !empty($arr) && str_replace($arr,'',$item) != $item ){ 
  115.                 continue; 
  116.             } 
  117.             $bodyimgsrc = (substr($item,0,4) != 'http') ? $prefix.$item : $item; 
  118.             if (strrchr($bodyimgsrc,'?') != '') { 
  119.                 $bodyimgsrc = str_replace( strrchr($bodyimgsrc,'?') ,'',$bodyimgsrc ); 
  120.             } 
  121.             if( str_replace('google','',$bodyimgsrc) != $bodyimgsrc ){ 
  122.                 continue; 
  123.             } 
  124.  
  125.             $srcpath = strchr( substr($bodyimgsrc,7),'/' ); 
  126.             if ( ! ( $ext = strrchr(basename($srcpath),'.') ) ){ 
  127.                 $ext = '.jpg'; 
  128.             } 
  129.             if( ($path == 'original') && ($link == 'original') ){ 
  130.                 $localfile = $dir . str_ireplace($ext,'', $srcpath ) . $ext; 
  131.                 $imgurl = $bodyimgsrc; 
  132.             }else{ 
  133.                 $localfile = $dir . '/' . substr(md5($bodyimgsrc),8,16) . $ext; 
  134.                 $imgurl = empty ( $dirarr[1] ) ? str_replace('','/',$localfile) : str_replace($dirarr[1].'/','', $localfile ); 
  135.             } 
  136.  
  137. file_put_contents($dir.'/imgsavelogs.txt',$localfile.'|'.$bodyimgsrc."rn",FILE_APPEND); 
  138.  
  139.             if( !file_exists($localfile) || !filesize($localfile) ){ 
  140.                 mkDirs( dirname($localfile) ); 
  141.                 for($i=0;$i<3;$i++){ 
  142.                     $filedata = browser($bodyimgsrc,'OBJECT',$http_referer); 
  143.                     $fileinfo = browser($bodyimgsrc,'HEADER',$http_referer); 
  144.                     if ( $filedata[1]['download_content_length'] == $fileinfo['download_content_length'] ){ 
  145.                         file_put_contents( $gbkname = mb_convert_encoding($localfile,'GBK','UTF-8'),$filedata[0] ); 
  146.                         break; 
  147.                     }else{ 
  148.                         // print_r ($filedata[1]);print_r($fileinfo); 
  149.                     } 
  150.                 } 
  151.             } 
  152.  
  153.             $body = str_replace($item , $imgurl , $body ); 
  154.             $body = preg_replace('/<img[^>]+'.addcslashes($item,'/.').'[^>]+>/iU' , '<img src="'.$imgurl.'">' , $body ); 
  155.  
  156.         } 
  157.     } 
  158.     return $body; 
  159. } 
  160.  
  161. function addImg ($content) { 
  162.     preg_match_all('/(http:.+(?:jpg|png|gif|bmp))[s<]/iU',$content,$matches); 
  163.     foreach( $matches[1] as $item ){ 
  164.         $content = str_replace($item,'<img src="'.trim($item).'">',$content); 
  165.     } 
  166.     return $content; 
  167. } 
  168.  
  169. function delDir($dir){ 
  170.     $dh = opendir($path); 
  171.     while(($d = readdir($dh)) !== false){ 
  172.         if($d == '.' || $d == '..'){ 
  173.             continue; 
  174.         } 
  175.             $tmp = $dir.'/'.$d; 
  176.         if(!is_dir($tmp)){ 
  177.             unlink($tmp); 
  178.         }else{ 
  179.             deldir($tmp); 
  180.         } 
  181.     } 
  182.     closedir($dh); 
  183.     rmdir($dir); 
  184. } 
  185. function deleteAll($directory, $empty = false) { 
  186.     if(substr($directory,-1) == "/") { 
  187.         $directory = substr($directory,0,-1); 
  188.     } 
  189.     if(!file_exists($directory) || !is_dir($directory)) { 
  190.         return false; 
  191.     }elseif(!is_readable($directory)) { 
  192.         return false; 
  193.     }else{ 
  194.         $directoryHandle = opendir($directory); 
  195.         while ($contents = readdir($directoryHandle)) { 
  196.             if($contents != '.' && $contents != '..') { 
  197.                 $path = $directory . "/" . $contents; 
  198.                 if(is_dir($path)) { 
  199.                     deleteAll($path); 
  200.                 } else { 
  201.                     unlink($path); 
  202.                 } 
  203.             } 
  204.         } 
  205.         closedir($directoryHandle); 
  206.         if($empty == false) { 
  207.             if(!rmdir($directory)) { 
  208.                 return false; 
  209.             } 
  210.         } 
  211.         return true; 
  212.     } 
  213. } 
  214.  
  215. function mkDirs($dir){ 
  216.     if( empty($dir) )  
  217.         return false; 
  218.     if( is_dir($dir) || @mkdir($dir) )  
  219.         return true; 
  220.     if( ! mkDirs( dirname($dir) ) )  
  221.         return false; 
  222.     return mkdir($dir); 
  223. } 
  224.  
  225.  
  226. function makedirs($path){ 
  227.     $arr=array(); 
  228.     while(!is_dir($path)){ 
  229.         array_push($arr,$path); 
  230.         $path=dirname($path); 
  231.     } 
  232.     while( ! empty($arr) && count($arr) ){ 
  233.         $parentdir=array_pop($arr); 
  234.         mkdir($parentdir); 
  235.     } 
  236.     if ( is_dir($path) ) 
  237.         return true; 
  238.     else 
  239.         return false; 
  240. } 
  241.  
  242. function filterParam($url, $paramArg = array() ) { 
  243.     if (empty($paramArg)){ 
  244.         $part = parse_url($url); 
  245.         return (empty($part['scheme'])?'':$part['scheme'].'://') 
  246.             . (empty($part['host'])?'':$part['host']) 
  247.             . (empty($part['port'])?'':':' . $part['port']) 
  248.             . (empty($part['path'])?'':$part['path']) ; 
  249.     } 
  250.     $parts = parse_url($url); 
  251.     if(!isset($parts['query'])) {return false;} 
  252.     parse_str($parts['query'], $output);     
  253.     return array_intersect_key($output,$paramArg); 
  254. } 
  255.  
  256. function searchInArray($str,$arr){ 
  257.     if( empty($str) || empty($arr) ) return false; 
  258.     if($key = array_search($str,$arr) ) return $key; 
  259.     foreach( $arr as $item ){ 
  260.         if( stripos($item,$str) !== false ) return array_search($item,$arr); 
  261.     } 
  262. } 
  263.  
  264. function is_multiArrayEmpty($multiarray) { 
  265.     if(is_array($multiarray) and !empty($multiarray)){ 
  266.         $tmp = array_shift($multiarray); 
  267.             if(!is_multiArrayEmpty($multiarray) or !is_multiArrayEmpty($tmp)){ 
  268.                 return false; 
  269.             } 
  270.             return true; 
  271.     } 
  272.     if(empty($multiarray)){ 
  273.         return true; 
  274.     } 
  275.     return false; 
  276. } 
  277.  
  278. function get_extension($link){ 
  279.     $ext = pathinfo($link, PATHINFO_EXTENSION); 
  280.     $ext = str_replace( strchr($ext,'?') ,'',$ext ); 
  281.     return $ext; 
  282. } 
  283.  
  284. function get_dirname($file){ 
  285.     if ( substr($file,-1) == '/') 
  286.         return substr($file,0,-1); 
  287.     else 
  288.         return dirname($file); 
  289. } 
  290.  
  291. function make2local($url,$domain = ''){ 
  292.     if( '/' == substr($url,-1) ){ 
  293.         $filename = str_replace($domain,'',$url) . 'index.html'; 
  294.     }else{ 
  295.         $newurl = ( ! get_extension($url) ) ? $url.'.html' : $url ; 
  296.         $filename = str_replace($domain,'',$newurl); 
  297.     } 
  298.     $filename = str_replace('.php','.html',$filename); 
  299.     return $filename; 
  300. } 
  301.  
  302. function get_absolute_url ( $url ) { 
  303.     $url = preg_replace('/[^/.]+/..//iU','',$url); 
  304.     if ( str_replace('/../','', $url ) != $url ) 
  305.         $url = get_absolute_url ($url); 
  306.     return str_replace('/.','',$url); 
  307. } 
  308.  
  309. function get_format_url($srcurl, $baseurl = '') { 
  310.     $srcinfo = parse_url($srcurl); 
  311.  
  312.     if (isset($srcinfo['scheme'])) { 
  313.         $fullurl = get_absolute_url($srcurl); 
  314.     } else { 
  315.         $baseinfo = parse_url($baseurl); 
  316.         if( ! isset($baseinfo['scheme']) ) { 
  317.             $fullurl = false; 
  318.         } 
  319.         $port = isset($baseinfo['port']) ? ':' . $baseinfo['port'] : '';  
  320.         $url = $baseinfo['scheme'].'://'.$baseinfo['host'] . $port; 
  321.         if(substr(@$srcinfo['path'], 0, 1) == '/') { 
  322.             $path = $srcinfo['path']; 
  323.         }else{ 
  324.             $path = dirname(@$baseinfo['path']).'/'.@$srcinfo['path']; 
  325.         } 
  326.         $rst = array(); 
  327.         $path_array = explode('/', $path); 
  328.         if(!$path_array[0]) { 
  329.             $rst[] = ''; 
  330.         } 
  331.         foreach ($path_array AS $key => $dir) { 
  332.             if ($dir == '..') { 
  333.                 if (end($rst) == '..') { 
  334.                     $rst[] = '..'; 
  335.                 }elseif(!array_pop($rst)) { 
  336.                     $rst[] = '..'; 
  337.                 } 
  338.             }elseif($dir && $dir != '.') { 
  339.                 $rst[] = $dir; 
  340.             } 
  341.         } 
  342.         if(!end($path_array)) { 
  343.             $rst[] = ''; 
  344.         } 
  345.         $path = implode('/',$rst); 
  346.         $url .= substr($path,0,1) == '/' ? $path : '/'.$path; 
  347.         $fullurl = str_replace('', '/', $url); 
  348.     } 
  349.     return $fullurl; 
  350. } 
  351.  
  352. function subContent( $response,$before,$after ) { 
  353.     if( $length = intval( stripos( $response , $after ) ) ){ 
  354.         $start = strpos( $response, $before ); 
  355.         $length = $length - $start; 
  356.         $content = substr( $response  ,$start , $length ); 
  357.     } 
  358.     return $content; 
  359. } 
  360.  
  361. function SpLongBody($mybody, $spsize, $sptag) 
  362. { 
  363.     if(strlen($mybody) < $spsize) 
  364.     { 
  365.         return $mybody; 
  366.     } 
  367.     $mybody = stripslashes($mybody); 
  368.     $bds = explode('<', $mybody); 
  369.     $npageBody = ''; 
  370.     $istable = 0; 
  371.     $mybody = ''; 
  372.     foreach($bds as $i=>$k) 
  373.     { 
  374.         if($i==0) 
  375.         { 
  376.             $npageBody .= $bds[$i]; continue; 
  377.         } 
  378.         $bds[$i] = "<".$bds[$i]; 
  379.         if(strlen($bds[$i])>6) 
  380.         { 
  381.             $tname = substr($bds[$i],1,5); 
  382.             if(strtolower($tname)=='table') 
  383.             { 
  384.                 $istable++; 
  385.             } 
  386.             else if(strtolower($tname)=='/tabl') 
  387.             { 
  388.                 $istable--; 
  389.             } 
  390.             if($istable>0) 
  391.             { 
  392.                 $npageBody .= $bds[$i]; continue; 
  393.             } 
  394.             else 
  395.             { 
  396.                 $npageBody .= $bds[$i]; 
  397.             } 
  398.         } 
  399.         else 
  400.         { 
  401.             $npageBody .= $bds[$i]; 
  402.         } 
  403.         if(strlen($npageBody)>$spsize) 
  404.         { 
  405.             $mybody .= $npageBody.$sptag; 
  406.             $npageBody = ''; 
  407.         } 
  408.     } 
  409.     if($npageBody!='') 
  410.     { 
  411.         $mybody .= $npageBody; 
  412.     } 
  413.     return $mybody; 
  414. } 
  415.  
  416. function gbksubstr($str, $start, $len) { 
  417.     $tmpstr = ""; 
  418.     $strlen = $start + $len; 
  419.     for($i = 0; $i < $strlen; $i++) { 
  420.         if(ord(substr($str, $i, 1)) > 0xa0) { 
  421.             $tmpstr .= substr($str, $i, 2); 
  422.             $i++; 
  423.         } else 
  424.             $tmpstr .= substr($str, $i, 1); 
  425.     } 
  426.     return $tmpstr; 
  427. } 
  428.  
  429. function utf8_substr($str,$from,$len){ 
  430.     preg_match_all('#(?:[x00-x7F]|[xC0-xFF][x80-xBF]+)#s',$str,$array, PREG_PATTERN_ORDER); 
  431.     $from1=0;$len1=0; 
  432.     foreach($array[0] as $key => $val){ 
  433.         $n = ord($val)>=128 ? 2:1; 
  434.         $from1 += $n; 
  435.         if($from1>$from){ 
  436.             $len1 += $n; 
  437.             if($len1<=$len){ 
  438.                 $s.=$val; 
  439.             }else{ 
  440.                 return $s; 
  441.             } 
  442.         } 
  443.     } 
  444.     return $s; 
  445. } 
  446.  
  447. function output_utf8($body){ 
  448.     if( is_utf8( $body ) ){ 
  449.         return $body; 
  450.     }else{ 
  451.         return mb_convert_encoding( $body,'UTF-8','GBK' ); 
  452.     } 
  453. } 
  454.  
  455. function fix_text($str){ 
  456.     $subject = ''; 
  457.     $subject_array = imap_mime_header_decode($str); 
  458.     foreach ($subject_array AS $obj) 
  459.         $subject .= rtrim($obj->text, " "); 
  460.     return $subject; 
  461. } 
  462.  
  463. function is_utf8($word){ 
  464.     if (preg_match("/^([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}/",$word) == true 
  465.     || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}$/",$word) == true 
  466.     || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){2,}/",$word) == true){ 
  467.         return true; 
  468.     }else{ 
  469.         return false; 
  470.     } 
  471. } 
  472.  
  473. function utf8_strlen($string = null) { 
  474.     preg_match_all('/./us', $string, $match); 
  475.     return count($match[0]); 
  476. } 
  477.  
  478. function getBody($mbox,$msgCount) { 
  479.     $body = getPart($mbox,$msgCount, "TEXT/HTML"); 
  480.     if ($body == '') { 
  481.         $body = getPart($mbox,$msgCount, "TEXT/PLAIN"); 
  482.     } 
  483.     if ($body == '') { 
  484.         return ''; 
  485.     } 
  486.     return $body; 
  487. } 
  488.  
  489. function getPart($mbox,$msgCount, $mimeType, $structure = false, $partNumber = false) { 
  490.     if(!$structure) { 
  491.         $structure = imap_fetchstructure($mbox, $msgCount); 
  492.     } 
  493.     if($structure) { 
  494.         if($mimeType == getMimeType($structure)) { 
  495.             if(!$partNumber) { 
  496.                 $partNumber = "1"; 
  497.             } 
  498.             $fromEncoding = $structure->parameters[0]->value; 
  499.             $text = imap_fetchbody($mbox, $msgCount, $partNumber); 
  500.             if($structure->encoding == 3) { 
  501.                 $text = imap_base64($text); 
  502.             } else if($structure->encoding == 4) { 
  503.                 $text = imap_qprint($text); 
  504.             } 
  505.             //$text = mb_convert_encoding($text,'utf-8',$fromEncoding); 
  506.             return $text; 
  507.         } 
  508.         if($structure->type == 1) { 
  509.             while(list($index, $subStructure) = each($structure->parts)) { 
  510.                 if($partNumber) { 
  511.                     $prefix = $partNumber . '.'; 
  512.                 } 
  513.                 $data = getPart($mbox,$msgCount, $mimeType, $subStructure, @$prefix . ($index + 1)); 
  514.                 if($data){ 
  515.                     return $data; 
  516.                 } 
  517.             } 
  518.         } 
  519.     } 
  520.     return false; 
  521. } 
  522.  
  523. function getMimeType($structure) { 
  524.     $mimeType = array("TEXT", "MULTIPART", "MESSAGE", "APPLICATION", "AUDIO", "IMAGE", "VIDEO", "OTHER"); 
  525.     if($structure->subtype) { 
  526.         return $mimeType[(int) $structure->type] . '/' . $structure->subtype; 
  527.     } 
  528.     return "TEXT/PLAIN"; 
  529. } 
  530.  
  531.  
  532. function textToImage ( $str , $size , $angle , $x , $y , $width = 400 ,$height = 400, $font = 'zh', $output = true) { 
  533.  
  534.     //要输出的字 
  535.     $zh_font = 'C:/Windows/Fonts/simsun.ttc'; 
  536.     $en_font = 'C:/Windows/Fonts/arial.ttf'; 
  537.     $lang = ($font == 'en') ? $en_font : $zh_font; 
  538.     // 创建一个真彩的图片背景,参数是  width 图像宽度, height 图像高度 
  539.     $im = imagecreatetruecolor($width, $height); 
  540.     //或者可以调用已有的PNG图片等 : $im = imagecreatefrompng('background.png'); 
  541.  
  542.     // 定义几个色彩 
  543.     $white = imagecolorallocate($im, 255, 255, 255); 
  544.     $grey = imagecolorallocate($im, 128, 128, 128); 
  545.     $black = imagecolorallocate($im, 0, 0, 0); 
  546.      
  547.     //填充背景为白色 
  548.     imagefill($im, 0, 0, $white); 
  549.      
  550.     //将背景透明化 
  551.     imagecolortransparent($im,$white); 
  552.      
  553.     //以上两行是创建透明图片的关键! 
  554.     //很多人反应, imagecreatetruecolor创建后的图片,背景颜色是黑的,无论怎么修改都不能变成白色的 
  555.     //我先将背景填充为白色,再做透明处理就可以了!在Firefox3和IE7下测试成功! 
  556.     // 这是一个很简单的产生阴影的效果。 
  557.     //先在原本要输出的位置的偏左下角一点点输出灰色的字体,接着再用黑色字体写上去就有阴影效果了 
  558.     //imagettftext($im, 20, 0, 11, 21, $grey, $en_font, $en_text); 
  559.      
  560.     // 写入字体 
  561.     imagettftext($im, $size, $angle, $x, $y, $black, $lang, $str); 
  562.  
  563.     if ( $output ) { 
  564.         ob_start(); 
  565.         imagepng($im); 
  566.         $image_data = ob_get_contents(); 
  567.         ob_end_clean(); 
  568.         $file_content=chunk_split( base64_encode($image_data) );//base64编码 
  569.         $img='data:image/png;base64,'.$file_content;//合成图片的base64编码 
  570.     } else { 
  571.         header("Content-type: image/png"); 
  572.         header("Cache-Control: no-cache");  
  573.         imagepng($im);  
  574.     }  
  575.     imagedestroy($im);  
  576.   
  577.     // 不用说了,输出图片,然后清除缓存  
  578.   
  579.     return $img;  
  580. }