Всем привет. Изучаю PHP. Имеется OpenServer+PHP5.3. Пытаюсь создать картинку на лету PHP: <? ##Создание картинки на "лету" $string="Hello, world!"; //Загружаем рисунок фона с диска $im=imagecreatefromgif("button.gif"); //Создаем в палитре новый цвет - черный $color=imagecolorallocate($im,0,0,0); //Вычисляем размеры текста, который будет выведен $px=(imagesx($im)-6.5-strlen($string))/2; //Выводим строку поверх того, что было в загруженном изображении imagestring($im,3,$px,1,$string,$color); //Сообщаем о том, что далее следует рисунок PNG header('Content-type: image/png,image/gif'); //Теперь - самое главное: отправляем данные картинки в стандартный выходной поток, т.е. в браузер imagepng($im); //В конце освобождаем память, занятую картинкой imagedestroy($im); ?> В результате в браузере "вылетает" ошибка: Изображение "http://proba2/primer21.php"не может быть показано, так как содержит ошибки. Тестировал на Мозиле и Гугл хром (в Гугле просто маленький серый квадратик). 1) Почитал разные форумы, советуют очистить кэш в браузере. Не помогает. 2)Тестировал разные коды с форума. Результат тот же. Может что то с настройками? Подскажите пож-та.
Эм... а как может один контейнер быть одновременно и пнг и гифом? Это первое что бросается в глаза. Второе - файл баттон.гиф лежит рядом со скриптом?
Это уже мои эксперименты. Менял imagepng($im); на imagegif($im); , 'Content-type: image/png' на 'Content-type: image/gif' ничего не помогает. Button.gif лежит рядом, да. Причем, пробовал указывать и прямой путь к файлу: D:\OpenServer\domains\Proba2\button.gif
Со вторым вопросом - всё в норме? Научись еще отладку адекватно делать. Как минимум - включи вывод ошибок и повысь уровень общительности пхп-машины. Почитай журналы веб-сервера.
Если ты выводишь imagepng то заголовок должен быть 'Content-type: image/png', а если imagegif то 'Content-type: image/gif'. Пробуй!
Ничего критического или каких-то ошибок в логах PHP, Apache и основном я не нашел. Вот php.ini Код (Text): error_reporting = E_ALL & ~E_NOTICE | E_STRICT display_errors = On display_startup_errors = On log_errors = On log_errors_max_len = 9024 ignore_repeated_errors = On ignore_repeated_source = On report_memleaks = Off ;report_zend_debug = 0 track_errors = On ;xmlrpc_errors = 0 ;xmlrpc_error_number = 0 ;html_errors = Off ;docref_root = "/phpmanual/" ;docref_ext = .html ;error_prepend_string = "<font color=#ff0000>" ;error_append_string = "</font>" error_log = "%sprogdir%/userdata/logs/%phpdriver%_error.log" Причем, не понятно почему браузер "ругается" на "http://proba2/primer21.php", а не на изображение.
ну по какому урлу изображение ожидается на такой урл браузер и ругается. замени тип данных на text/plain и посмотри что браузер получает
PHP: <? ##Создание картинки на "лету" $string="Hello, world!"; //Загружаем рисунок фона с диска $im=imagecreatefrompng("button.png"); //Создаем в палитре новый цвет - черный $color=imagecolorallocate($im,255,255,255); //Вычисляем размеры текста, который будет выведен $px=(imagesx($im)-6.5-strlen($string))/2; //Выводим строку поверх того, что было в загруженном изображении imagestring($im,3,$px,1,$string,$color); //Сообщаем о том, что далее следует рисунок PNG header('Content-type: image/png'); //Теперь - самое главное: отправляем данные картинки в стандартный выходной поток, т.е. в браузер imagepng($im); //В конце освобождаем память, занятую картинкой imagedestroy($im); Спойлер: img
У меня не получается загрузить файл. Пишет: Произошла ошибка. При загрузке файла возникла проблема. И все. Размер архива 611Кб.
Хотя, я выбрал гифку наугад, просто потренироваться. Переформатировал из Джипега. --- Добавлено --- Вот ссылка - https://yadi.sk/d/2iWCeq5z3LDsPa
всё работает. я только открывающий тег на полный поменял и удалил закрывающий. интерпретатор версии 7.0
О, получилось! Поменял на 7.0 и перекодировал на UTF-8 без BOM. Спасибо большое! Продолжаем обучение.
Ты в чём пичешь код? Мне требовалось делать перекодировку видел только в notepad++. Используй ide их не много, phpshtorm и NetBeans, они по умолчанию используют uff-8 и в них есть много крутых штук.