За последние 24 часа нас посетили 36608 программистов и 1723 робота. Сейчас ищут 802 программиста ...

Изображение не может быть показано ...

Тема в разделе "PHP для новичков", создана пользователем Зингер, 20 июл 2017.

  1. Зингер

    Зингер Активный пользователь

    С нами с:
    20 июл 2017
    Сообщения:
    127
    Симпатии:
    7
    Всем привет. Изучаю PHP. Имеется OpenServer+PHP5.3.
    Пытаюсь создать картинку на лету
    PHP:
    1. <? ##Создание картинки на "лету"
    2. $string="Hello, world!";
    3. //Загружаем рисунок фона с диска
    4. $im=imagecreatefromgif("button.gif");
    5. //Создаем в палитре новый цвет - черный
    6. $color=imagecolorallocate($im,0,0,0);
    7. //Вычисляем размеры текста, который будет выведен
    8. $px=(imagesx($im)-6.5-strlen($string))/2;
    9. //Выводим строку поверх того, что было в загруженном изображении
    10. imagestring($im,3,$px,1,$string,$color);
    11. //Сообщаем о том, что далее следует рисунок PNG
    12. header('Content-type: image/png,image/gif');
    13. //Теперь - самое главное: отправляем данные картинки в стандартный выходной поток, т.е. в браузер
    14. imagepng($im);
    15. //В конце освобождаем память, занятую картинкой
    16. ?>
    В результате в браузере "вылетает" ошибка:
    Изображение "http://proba2/primer21.php"не может быть показано, так как содержит ошибки.
    Тестировал на Мозиле и Гугл хром (в Гугле просто маленький серый квадратик).
    1) Почитал разные форумы, советуют очистить кэш в браузере. Не помогает.
    2)Тестировал разные коды с форума. Результат тот же.

    Может что то с настройками? Подскажите пож-та.
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Эм... а как может один контейнер быть одновременно и пнг и гифом? Это первое что бросается в глаза. Второе - файл баттон.гиф лежит рядом со скриптом?
     
    Васяня нравится это.
  3. Зингер

    Зингер Активный пользователь

    С нами с:
    20 июл 2017
    Сообщения:
    127
    Симпатии:
    7
    Это уже мои эксперименты.
    Менял imagepng($im); на imagegif($im); , 'Content-type: image/png' на 'Content-type: image/gif' ничего не помогает.
    Button.gif лежит рядом, да. Причем, пробовал указывать и прямой путь к файлу:
    D:\OpenServer\domains\Proba2\button.gif
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Со вторым вопросом - всё в норме? Научись еще отладку адекватно делать. Как минимум - включи вывод ошибок и повысь уровень общительности пхп-машины. Почитай журналы веб-сервера.
     
  5. Васяня

    Васяня Активный пользователь

    С нами с:
    2 окт 2016
    Сообщения:
    238
    Симпатии:
    32
    Адрес:
    Россия, Приморский край, г. Находка.
    Если ты выводишь imagepng то заголовок должен быть 'Content-type: image/png', а если imagegif то 'Content-type: image/gif'. Пробуй!
     
  6. Зингер

    Зингер Активный пользователь

    С нами с:
    20 июл 2017
    Сообщения:
    127
    Симпатии:
    7
    Ничего критического или каких-то ошибок в логах PHP, Apache и основном я не нашел.
    Вот php.ini
    Код (Text):
    1. error_reporting = E_ALL & ~E_NOTICE | E_STRICT
    2. display_errors = On
    3. display_startup_errors = On
    4. log_errors = On
    5. log_errors_max_len = 9024
    6. ignore_repeated_errors = On
    7. ignore_repeated_source = On
    8. report_memleaks = Off
    9. ;report_zend_debug = 0
    10. track_errors = On
    11. ;xmlrpc_errors = 0
    12. ;xmlrpc_error_number = 0
    13. ;html_errors = Off
    14. ;docref_root = "/phpmanual/"
    15. ;docref_ext = .html
    16. ;error_prepend_string = "<font color=#ff0000>"
    17. ;error_append_string = "</font>"
    18. error_log = "%sprogdir%/userdata/logs/%phpdriver%_error.log"
    Причем, не понятно почему браузер "ругается" на "http://proba2/primer21.php", а не на изображение.
     
  7. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну по какому урлу изображение ожидается на такой урл браузер и ругается. замени тип данных на text/plain и посмотри что браузер получает
     
  8. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    PHP:
    1. <? ##Создание картинки на "лету"
    2. $string="Hello, world!";
    3. //Загружаем рисунок фона с диска
    4. $im=imagecreatefrompng("button.png");
    5. //Создаем в палитре новый цвет - черный
    6. $color=imagecolorallocate($im,255,255,255);
    7. //Вычисляем размеры текста, который будет выведен
    8. $px=(imagesx($im)-6.5-strlen($string))/2;
    9. //Выводим строку поверх того, что было в загруженном изображении
    10. imagestring($im,3,$px,1,$string,$color);
    11. //Сообщаем о том, что далее следует рисунок PNG
    12. header('Content-type: image/png');
    13. //Теперь - самое главное: отправляем данные картинки в стандартный выходной поток, т.е. в браузер
    14. imagepng($im);
    15. //В конце освобождаем память, занятую картинкой
    [​IMG]
     
  9. Зингер

    Зингер Активный пользователь

    С нами с:
    20 июл 2017
    Сообщения:
    127
    Симпатии:
    7
    Кракозябры в браузере.
    P.S. Что то загрузить изображение не могу.
     
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    дай гифку с которой работаешь (архивом)
     
  11. Зингер

    Зингер Активный пользователь

    С нами с:
    20 июл 2017
    Сообщения:
    127
    Симпатии:
    7
    У меня не получается загрузить файл.
    Пишет: Произошла ошибка. При загрузке файла возникла проблема. И все.
    Размер архива 611Кб.
     
  12. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    через файлообменник попробуй
     
  13. Зингер

    Зингер Активный пользователь

    С нами с:
    20 июл 2017
    Сообщения:
    127
    Симпатии:
    7
    Хотя, я выбрал гифку наугад, просто потренироваться. Переформатировал из Джипега.
    --- Добавлено ---
    Вот ссылка - https://yadi.sk/d/2iWCeq5z3LDsPa
     
  14. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    всё работает. я только открывающий тег на полный поменял и удалил закрывающий. интерпретатор версии 7.0
     
    Зингер нравится это.
  15. Зингер

    Зингер Активный пользователь

    С нами с:
    20 июл 2017
    Сообщения:
    127
    Симпатии:
    7
    О, получилось! Поменял на 7.0 и перекодировал на UTF-8 без BOM.
    Спасибо большое! Продолжаем обучение.
     
  16. Васяня

    Васяня Активный пользователь

    С нами с:
    2 окт 2016
    Сообщения:
    238
    Симпатии:
    32
    Адрес:
    Россия, Приморский край, г. Находка.
    Ты в чём пичешь код? Мне требовалось делать перекодировку видел только в notepad++. Используй ide их не много, phpshtorm и NetBeans, они по умолчанию используют uff-8 и в них есть много крутых штук.
     
  17. Зингер

    Зингер Активный пользователь

    С нами с:
    20 июл 2017
    Сообщения:
    127
    Симпатии:
    7
    В Нотпаде++, да. За совет спасибо, просто что показали, то я и юзаю.
     
    Васяня нравится это.