В чем проблема с моим php-сгенерированным png-файлом? - PullRequest
4 голосов
/ 19 июня 2010

Я хочу сделать уникальную подпись на форуме из моих последних просмотренных аниме на PHP.Они содержатся в ленте RSS.На моем локальном сервере Apache изображение генерируется хорошо, но когда я загружаю его на сервер, я получаю сообщение об ошибке, изображение вообще не создается.

Вот мой код, и мне интересно, что этопроблема, поскольку ни Dreamweaver CS5, ни phpDesigner 7 не отображают никаких ошибок, хотя, если я нажимаю кнопку «Выполнить» в phpDesigner, я получаю сообщение об ошибке, но я не знаю, что это значит.Ошибка следующая:

Строка: 6 - Неустранимая ошибка: вызов неопределенной функции imagecreatefrompng () в [пути php здесь]

Таким образом, код следующий:

<?php
    // title & description arrays
    $titleCuts = array();
    $descCuts = array();
    // bg image
    $bgimg = imagecreatefrompng('sig_robin.png');
    // colors 
    $white = imagecolorallocate($bgimg, 255, 255, 255);
    $textColor = imagecolorallocate($bgimg, 245, 193, 9);
    $shapeColor = imagecolorallocate($bgimg, 27, 20, 0);

    // sxe <- xml url
    $sxe = new SimpleXMLElement('http://myanimelist.net/rss.php?type=rw&u=fema', NULL, TRUE);

    // shape
    imagefilledrectangle($bgimg, 255, 20, 567, 279, $shapeColor);

    // TEXTS
    imagettftext($bgimg, 20, 0, 263, 52, $white, "my.ttf", "Latest Watched:");
    // episodes' text
    for($i=0;$i<5;$i++) 
    {
        // title cut and joint
        $titleCuts = explode(' ', $sxe->channel->item[$i]->title, -2);
        $titleCut = implode(' ',$titleCuts);
        // description (ep) cut and joint
        $descCuts = explode(' ', $sxe->channel->item[$i]->description);
        // output
        imagettftext($bgimg, 10, 0, 270, 77+($i*45), $textColor, "my.ttf", $titleCut);
        imagettftext($bgimg, 10, 0, 270+(strlen($titleCut)*7.2), 92+($i*45), $textColor, "my.ttf", "ep. ".$descCuts[2]);
    }

    header('Content-type: image/png');    
    // generating image
    imagepng($bgimg);
?>

Заранее спасибо.

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

Они выглядят так:

Предупреждение: imagettftext () [function.imagettftext]: Не удалось найти / открыть шрифт в ..на линии 19

Ответы [ 4 ]

2 голосов
/ 19 июня 2010

IF imagecreatefrompng не определено, скорее всего, библиотека GD не установлена ​​или не работает, см .: http://php.net/manual/en/image.installation.php

Не пугайтесь «вам нужно настроить и перестроить PHP»обычно менеджер пакетов вашей ОС может легко добавить поддержку GD, установив дополнительный пакет.

2 голосов
/ 19 июня 2010

Это означает, что GD либо не был скомпилирован в PHP, либо не был загружен. Сначала проверьте ваш php.ini, путь к которому вы можете найти с помощью phpinfo() для extension=php_gd2.dll и убедитесь, что он не закомментирован точкой с запятой. После изменения настройки перезапустите веб-сервер, затем снова посмотрите на phpinfo(), чтобы увидеть, загружен ли GD.

1 голос
/ 19 июня 2010

Хорошо, решение для второй проблемы состоит в том, что это ошибка php http://bugs.php.net/bug.php?id=41336

Но его легко решить следующим образом:

Поместите ./ перед каждым * .ttf-файлом, как в следующем примере:

imagettftext(IMAGE, 0, 0, 0, 0, TEXT_COLOR, "./ttf_file.ttf", TEXT);
1 голос
/ 19 июня 2010

Чтобы использовать эту функцию (imagecreatefrompng), ваш php должен быть установлен с расширениями GD (для получения дополнительной информации см. эта страница .

Чтобы проверить, что установлено / не установлено, создайте php-файл на локальном сервере, набрав всего лишь:

А затем сравните разделы изображений (GD) с тем же файлом, запущенным на вашем сервере.

Обратите внимание, что если вы находитесь на сервере общего хостинга, вам, вероятно, придется связаться с их администраторами, чтобы установить / настроить это для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...