2014-10-06 11 views
0

내 웹 사이트에 업로드 한 글꼴을 사용하려고하는데 "imagettftext() : 글꼴을 찾지 못했습니다."라는 오류 메시지가 계속 나타납니다.imagettftext가 글꼴 파일을 열 수없는 이유를 아는 사람이 있습니까?

나는 이미 putenv 도구를 사용해 보았지만 여전히 파일을 열고 싶지 않습니다. 모닥불에 내가 사용할 수있는 파일의 종류를 제한하는 옵션이 있습니까? imagestring 함수를 사용할 수 있지만 다른 글꼴이 필요합니다.

HTML 파일에서 글꼴을로드 할 수 있었으므로 imagettftext()에서 문제가있는 것 같습니다.

$image = imagecreatefrompng('/home/dev3/public_html/themes/admin/images/countdown.png'); 
    $font = array(
     'size'=>40, 
     'angle'=>0, 
     'x-offset'=>10, 
     'y-offset'=>70, 
     'file'=>'/home/dev3/public_html/fonts/DIGITALDREAM.ttf', 
     'color'=>imagecolorallocate($image, 255, 255, 255), 
    ); 

      $image = imagecreatefrompng('/home/dev3/public_html/themes/admin/images/countdown.png'); 
      // Open the first source image and add the text. 
      $text = $interval->format('%a:%H:%I:%S'); 
      if(preg_match('/^[0-9]\:/', $text)){ 
       $text = '0'.$text; 
      } 
      $text,$font['color']); 
      putenv('GDFONTPATH=' . realpath('.')); 
      imagettftext ($image , $font['size'] , $font['angle'] , $font['x-offset'] , $font['y-offset'] , $font['color'],$font['file'] ,$text); 

      ob_start(); 
      imagegif($image); 
      ob_end_clean(); 

    $gif = new AnimatedGif($frames,$delays,$loops); 
    $gif->display(); 
+0

전체 경로를 사용해보십시오. 또는'echo getcwd();'의 출력을보십시오. .ttf 파일이있는 곳과 같은가요? – Cheery

+0

.ttf 파일은 php와 같은 디렉토리에 없습니다. 나는 여러 경로에 .ttf 파일의 사본을 넣었습니다. 정확한 경로가있는 public_html 폴더를 포함하여 여전히 문제를 일으키고 있습니다. 경로에 대한 URL을 열 수 있으며 파일을 다운로드하라는 메시지가 표시됩니다. 나도 다른 서버에서 URL을 사용하여 시도하고 괜찮 았어. ImageString 함수가 잘 작동하기 때문에 문제가 imagettftext()와 관련이 있다고 생각합니다. – inlandquarter

답변

1

GD/FreeType 글꼴로드 코드는 로컬 파일 시스템으로 제한됩니다. 귀하의 코드는 HTTP URL에서 글꼴을 읽으려고한다 :

$font = array(... 
    'file'=>'https://dev3.successengineapps.com/fonts/DIGITALDREAM.ttf' 
...); 

은 GD의 폰트 로딩 코드는 HTTP 요청을하는 방법을 알고하지 않습니다.

다음은 일종의 출력을 얻는 데 필요한 최소 코드 집합의 예입니다. 즉, 당신의 코드의 방법으로 심각한 재 작성을 시도하지 않은,하지만 분명히 직접 문제와 관련되지 않은 아무것도 밖으로 제거 :이 코드의 출력은 볼 수 여기

<?php 
header('Content-Type: image/gif'); 
$image = imagecreatefrompng('https://dev3.successengineapps.com/themes/admin/images/countdown.png'); 
    $font = array(
     'size'=>40, 
     'angle'=>0, 
     'x-offset'=>10, 
     'y-offset'=>70, 
     'file'=>'./DIGITALDREAM.ttf', 
     'color'=>imagecolorallocate($image, 255, 255, 255), 
    ); 
$text = "Hello, world."; 
if (imagettftext ($image , $font['size'] , $font['angle'] , $font['x-offset'] , $font['y-offset'] , $font['color'],$font['file'] ,$text)) { 
     imagegif($image); 
} else { 
     var_dump($php_errormsg); 
} 

입니다 :

GD code

나의 추천이 시작하고 작업 출력을 얻을 수 있는지 확인하고 천천히 하나가 작동하는 솔루션이 될 때까지 다시 추가 코드를 추가하거나 그것을 파괴되는 것을 발견하는 것입니다.

+0

배열 ( [GD 버전] => 묶음 (2.0.34 호환) [FreeType에서 지원] => 1 [FreeType에서 연계] => FreeType에서 와 [T1Lib 지원] => [GIF 읽기 지원] => 1 [GIF 만들기 지원] => 1 [JPEG 지원] => 1 [PNG 지원] => 1 [WBMP 지원] => 1 [XPM 지원] => 1 [XBM 지원] => 1 [JIS 매핑 일본어 폰트 지원] => ) – inlandquarter

+0

내가 그렇게 알 - ~을위한 코드 TTF 파일을 열거 나로드하는 것은 PHP의'streams'을 사용하지 않고 URL을 지원하지 않는 FreeType을 사용하며 로컬 파일 시스템 만 사용합니다. – TML

+0

현재 경로를 찾으려고하고 있는데 그 중 하나가 작동하지 않습니다 (/home/dev3/public_html/fonts/DIGITALDREAM.ttf) – inlandquarter