2014-07-25 11 views
2

저는 imagettftext를 사용하여 PNG 파일을 렌더링하고 있습니다. imagettftext()를 호출하면 텍스트가 렌더링 된 경계 상자가 반환되지만 더 자세히 살펴보면 텍스트가 텍스트 바깥에서 약간 렌더링됩니다! 그것은이 출력은 바운딩 박스 (I 이미지의 픽셀 좌표를 검사) 정확하지만 텍스트 위치가 잘못 여기서 박스 텍스트 렌더링 후 리턴 바운딩 박스 :PHP imagettftext 리턴 바운딩 박스는 렌더링 된 바운딩 박스와 다릅니다

enter image description here

// helper function for geting textbox bounds 
function bounds($text,$fontFile,$fontSize,$fontAngle) { 
    $rect = imagettfbbox($fontSize,$fontAngle,$fontFile,$text); 
    $minX = min(array($rect[0],$rect[2],$rect[4],$rect[6])); 
    $maxX = max(array($rect[0],$rect[2],$rect[4],$rect[6])); 
    $minY = min(array($rect[1],$rect[3],$rect[5],$rect[7])); 
    $maxY = max(array($rect[1],$rect[3],$rect[5],$rect[7])); 

    return array( 
     "left" => abs($minX) - 1, 
     "top" => abs($minY) - 1, 
     "width" => $maxX - $minX, 
     "height" => $maxY - $minY, 
     "box" => $rect 
    ); 
} 

$canvas = @imagecreate(640, 680) 
    or die('Cannot Initialize new GD image stream'); 

$title_color = imagecolorallocate($canvas, 153, 153, 153); 
$content_color = imagecolorallocate($canvas, 51, 51, 51); 

$content_bounds = bounds("12", "Helvetica_Reg.ttf", 75, 0); 
$test = imagettftext($canvas, 75, 0, 30, 200, $content_color, "Helvetica_Reg.ttf", "12"); 
imagerectangle($canvas, $test[0], $test[1], $test[4], $test[5], $title_color); 

답변

1

아마도, 내가 다른 하나 코드를 테스트 글꼴에 문제가, 그리고 난

enter image description here

을 가지고 : 코드는