Предупреждение: imagettftext() [function.imagettftext]: не удалось найти/открыть шрифт в /home/a2424901/public_html/index.php в строке 35.

<?php
session_start();
require_once 'facebook.php';
$app_id = "418907881455014";
$app_secret = "36389d2c4caaf6de86982cb87686a494";
$redirect_uri = 'http://gooogle12.comuf.com';
$facebook = new Facebook(array(
        'appId' => $app_id,
        'secret' => $app_secret,
        'cookie' => true
));
$user = $facebook->getUser();
$user_profile = $facebook->api('/me');

$coded = $_REQUEST['code'];

$access_token = $facebook->getAccessToken();
$name = "".$user_profile['name']."";
$fbid = "".$user_profile['id']."";

function RandomLine($filename) {
    $lines = file($filename) ;
    return $lines[array_rand($lines)] ;
}
$reason = RandomLine("reason.txt");  

$canvas = imagecreatefromjpeg ("bg.jpg");                                   // background image file
$black = imagecolorallocate( $canvas, 0, 0, 0 );                         // The second colour - to be used for the text
$font = "Arial.ttf";                                                         // Path to the font you are going to use
$fontsize = 20;                                                             // font size

$birthday = "".$user_profile['birthday']."";
$death = "- ".date('d/m/Y', strtotime( '+'.rand(0, 10000).' days'))."";

imagettftext( $canvas, 22, -1, 110, 120, $black, $font, $name );            // name
imagettftext( $canvas, 22, -1, 110, 170, $black, $font, $birthday );        // birthday
imagettftext( $canvas, 22, -1, 255, 172, $black, $font, $death );           // death
imagettftext( $canvas, 20, -1, 110, 220, $black, $font, $reason );           // reason


$facebook->setFileUploadSupport(true);

//Create an album
$album_details = array(
        'message'=> 'How will you die?',
        'name'=> 'How will you die?'
);
$create_album = $facebook->api('/me/albums', 'post', $album_details);

//Get album ID of the album you've just created
$album_uid = $create_album['id'];

//Upload a photo to album of ID...

$file='img/'.$fbid.'.jpg'; //Example image file

$photo_details = array( 'message'=> 'Find...51', 'image' => '@'.realpath($file));
$upload_photo = $facebook->api('/'.$album_uid.'/photos', 'post', $photo_details);


    enter code here



ImageDestroy( $canvas );

header("Location: http://facebook.com".$fbid."&photoid=".$upphoto."")
?>

Ну, я использую этот php-код для создания приложения facebook. Я загрузил шрифт Arial.ttf в корневой каталог моего сайта. Но все же я показываю ошибку - Warning: imagettftext() [function.imagettftext]: Could not find/open font in /home/a2424901/public_html/index.php on line 35. Я пытался изменить случай, но я не работал для меня. Где я ошибся в этом коде?


person Nishant Ghodke    schedule 28.04.2012    source источник


Ответы (10)


Из документации

В зависимости от того, какую версию библиотеки GD использует PHP, если файл шрифта не начинается с начального символа /, то к имени файла будет добавлен .ttf, и библиотека попытается найти это имя файла по заданному библиотекой пути к шрифту.

Кажется, это означает, что файл шрифта должен быть абсолютным путем, и если это не так, функция добавит еще один .ttf в его конец.

Укажите полный путь к файлу шрифта.

$font = "/home/a2424901/public_html/Arial.ttf";

Или опустите .ttf и используйте GDFONTPATH. Документация рекомендует следующее:

Во многих случаях, когда шрифт находится в том же каталоге, что и сценарий, использующий его, следующий прием устранит любые проблемы с включением.

putenv('GDFONTPATH=' . realpath('.'));
$font = "Arial";
person Michael Berkowski    schedule 28.04.2012

Чтобы добавить к ответу пользователя 2724960; Изменение FontName на __DIR__ . '/graph/fonts/someFont.ttf' помогло мне.

Полная строка:

$myPicture->setFontProperties(array("FontName"=>__DIR__ .  '/graph/fonts/someFont.ttf',"FontSize"=>14));

Не забудьте заменить «someFont» именем вашего файла шрифта (по умолчанию: «Forgotte»).

person Magictallguy    schedule 07.12.2013
comment
это работает, спасибо. Я думал, что это проблема с разрешением, но это не так. - person arjunaaji; 17.10.2016

Мое решение (работает для меня):

realpath('here/is/right/path/to/font.ttf');
person Świeżu    schedule 26.10.2018

У меня была такая же проблема. Имя моего шрифта было

Титр.ТТФ

и я изменил его на

Титр.ttf

и он работал отлично.

person Metalife    schedule 11.07.2014

у меня сработало: используйте абсолютный путь

$font = 'C:\wamp\www\Persian-txt2img\Vazir-Code.ttf';
$font = mb_convert_encoding($font, 'big5', 'utf-8');

// Add the text
imagettftext($image, 24, 0, 64, 48, $text_color, $font, $text);
person Criss    schedule 02.09.2019

Я также на XAMPP, по-видимому, XAMPP поддерживает только полный путь к каталогу шрифта. Этот код работает как в Windows (XAMPP), так и на Linux-сервере нашего провайдера:

$dir= dirname(realpath(__FILE__));
$sep=DIRECTORY_SEPARATOR;   
$font =$dir.$sep.'arial.ttf';
imagettftext($thumb, $size, 0, $y_pos, $size, $textcolor, $font, $txt);

(при условии, что ваш файл шрифта находится в том же каталоге, что и ваш файл php)

person oleviolin    schedule 12.11.2020

если вы используете pChart, используйте это:

$myPicture->setFontProperties(array("FontName"=>"../fonts/Forgotte.ttf","FontSize"=>11));
person Mahdian    schedule 28.08.2013

На GoDaddy (виртуальный хостинг, Cpanel) мне нужно указать путь только после домена:

Мои файлы здесь:

URL:  http://example.com/assets/fonts/verdana/verdana.ttf
path:  /home/content/123456/html/example/assets/fonts/verdana/verdana.ttf

Работающий PHP-код:

$font = 'assets/fonts/verdana/verdana.ttf';

Использование других значений для пути не сработало.

person Genki    schedule 13.04.2020

Я столкнулся с той же проблемой, работая на локальном хосте (XAMPP).

Мое решение было:

// Set Correct Path to Font File
$fontPath='C:\xampp\htdocs\Adeplay\fonts\Tesox\tesox.ttf'; 
person ShapCyber    schedule 26.06.2020

Пожалуйста, проверьте папку шрифтов в разделе Ресурсы.

person Sanjay    schedule 11.06.2014
comment
Это должен быть комментарий, а не ответ. - person Tay2510; 11.06.2014