php利用自定义字体与底图合成新图片

<?php
	
	header("Content-Type:text/html;charset=utf-8");
	
	$conn=mysql_connect('localhost','root','root') or die("error connecting") ; //连接数据库   
	mysql_query("set names 'utf8'"); //数据库输出编码    
	mysql_select_db('ceshi'); //打开数据库   
	//
	
	$sql ="select * from tp_guanyi_diligence_user order by id asc limit 1000"; //SQL语句   
	$result = mysql_query($sql,$conn); //查询 
	while($row = mysql_fetch_array($result))  {   
		//echo $row['id'] . "_" .$row['name1'] . "_" . $row['name2'].'<br/>';
		
		$bigImgPath = 'backgroud.png';
		$img = imagecreatefromstring(file_get_contents($bigImgPath));

		$font = 'simsun.ttc';//字体
		$black = imagecolorallocate($img, 255, 0, 0);//字体颜色 RGB
	 
		$fontSize = 16;   //字体大小
		$circleSize = 0; //旋转角度

		$text = $row['name1'];
		$len = abslength($text);
		
		$left = 50;      	  //左边距
		if($len==2){
			$top = 255;       //顶边距
		}elseif($len==3){
			$top = 245;       //顶边距
		}elseif($len==4){
			$top = 235;       //顶边距
		}elseif($len==5){
			$top = 225;       //顶边距
		}elseif($len==6){
			$top = 215;       //顶边距
		}
		
		$str = '';
		for($i=0;$i<$len;$i++){
			$txt = mb_substr($text,$i,1,'utf-8');
			imagefttext($img, $fontSize, $circleSize, $left, $top, $black, $font, $txt);
			$top = $top+22;
		}

		$text = $row['name2'];
		$len = abslength($text);
		
		$left = 110;      //左边距
		if($len==2){
			$top = 255;       //顶边距
		}elseif($len==3){
			$top = 245;       //顶边距
		}elseif($len==4){
			$top = 235;       //顶边距
		}elseif($len==5){
			$top = 225;       //顶边距
		}elseif($len==6){
			$top = 215;       //顶边距
		}
		
		$str = '';
		for($i=0;$i<$len;$i++){
			$txt = mb_substr($text,$i,1,'utf-8');
			imagefttext($img, $fontSize, $circleSize, $left, $top, $black, $font, $txt);
			$top = $top+22;
		}
		
		 // 生成图片
		$newname = $row['id'];
		imagepng($img, $newname.'.png');
		imagedestroy($img);		
	} 
	
	
function abslength($str)
{
    if(empty($str)){
        return 0;
    }
    if(function_exists('mb_strlen')){
        return mb_strlen($str,'utf-8');
    }
    else {
        preg_match_all("/./u", $str, $ar);
        return count($ar[0]);
    }
}
function csubstr($str, $start=0, $length, $charset="utf-8", $suffix=true) 
{ 

   if(function_exists("mb_substr")) 
   { 
 
       if(mb_strlen($str, $charset) <= $length) return $str; 
 
       $slice = mb_substr($str, $start, $length, $charset); 
 
   } 
   else
   { 
 
       $re['utf-8']   = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/"; 
 
       $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/"; 
 
       $re['gbk']          = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/"; 
 
       $re['big5']          = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/"; 
 
       preg_match_all($re[$charset], $str, $match); 
 
       if(count($match[0]) <= $length) return $str; 
 
       $slice = join("",array_slice($match[0], $start, $length)); 
 
   } 
 
   if($suffix) return $slice; 
 
   return $slice; 
 
}


?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值