2011-02-17 7 views
3

GD 이미지에서 줄 바꿈하고 가운데에 맞춰야하는 텍스트 줄이 있습니다. 나는 ttf 글꼴도 사용하고 있습니다. 뭐 좀 도와 주실 래요?gd 및 php에서 텍스트 줄 바꾸기 및 가운데 맞추기

나는 다음을 수행 포장 텍스트를 얻을 수 있었다, 그러나 지금은 센터로 도착해야합니다 Pagter 제공

function wrap($fontSize, $angle, $fontFace, $string, $width){ 

    $ret = ""; 

    $arr = explode(' ', $string); 

    foreach ($arr as $word){ 

     $teststring = $ret.' '.$word; 
     $testbox = imagettfbbox($fontSize, $angle, $fontFace, $teststring); 
     if ($testbox[2] > $width){ 
      $ret.=($ret==""?"":"\n").$word; 
     } else { 
      $ret.=($ret==""?"":' ').$word; 
     } 
    } 

    return $ret; 
} 

답변

1

은 수평 및 수직 중심 : (새 라인) 전체 텍스트 imagettfbbox에서 절반 높이를 얻을 이미지 ($start_x)의 절반 높이에서 그것을 빼지.

새 줄로 텍스트를 나눠서 각 줄마다 ttfbox를 만들고 높이 ($h)와 반 너비 ($w)를 얻으십시오. 반쪽 이미지 폭 $w$start_x부터 시작하여, $h$start_x을 추가하고, 모든 행이 기록 될 때까지 다시 그립니다.

2

사용자 valentijn 드, PHP 순 매뉴얼에 멋진 기능은 계산 상자 (실제로 imagettfbbox()를 사용하고있는 것을 볼 수 있습니다)를 반환하고 반환하는 배열에서 텍스트를 가운데 정렬하는 방법을 계산합니다. 당신은 여기에서 찾을 수 있습니다

center text with imagettfbbox

0

이것은 내가 한 일입니다. imagettftext 함수를 사용하여 새 행 표시를 추가하고 다음 행으로 계속 진행할 수 있습니다. 특정 양의 문자 다음에 문자열에 \ n을 추가 할 수 있습니다. 이 예제는 공백으로 분리되므로 단어가 잘리지 않습니다.

  $description=$property['description']; 
      $len=strlen($description); 
      $str=""; 
      $c=0; 
      for($i=0;$i<$len;$i++){ 
       $chr=substr($description,$i,1); 
       $str.=$chr; 
       if($c>40 && $chr==" ") { 
        $str.="\n"; 
        $c=0; 
       } 
       $c++; 
       } 
      $result=$str; 
      imagettftext($img, 15, 0, $x - 60, $descmgn, $textcolor, $font, $result); 
관련 문제