Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
0 / 0 / 2
Регистрация: 31.12.2014
Сообщений: 226

Php gd и вывод изображения

17.03.2015, 09:57. Показов 2416. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, помогите разобраться, генерирую изображение с помощью php, перепроверил код 10 раз, не пойму почему оно не выводиться все равно, GD вроде в порядке, phpinfo() пишет:

GD Support enabled
GD Version bundled (2.1.0 compatible)
GIF Read Support enabled
GIF Create Support enabled
JPEG Support enabled
libJPEG Version 9 compatible
WBMP Support enabled
XBM Support enabled

Код самого скрипта:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];
define("code_dir", "my_codegen/");
 
 
 
function generate_code() //генерируем код
{
                
    $hours = date("H"); // час       
    $minuts = substr(date("H"), 0 , 1);// минута 
    $mouns = date("m");    // месяц             
    $year_day = date("z"); // день в году
 
    $str = $hours . $minuts . $mouns . $year_day; //создаем строку
    $str = md5(md5($str)); //дважды шифруем в md5
    $str = strrev($str);// реверс строки
    $str = substr($str, 3, 6); // извлекаем 6 символов, начиная с 3
 
    
 
    $array_mix = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
    srand ((float)microtime()*1000000);
    shuffle ($array_mix);
    //Тщательно перемешиваем
    return implode("", $array_mix);
}
 
function img_code() // рисуем картинку 
{
 
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");                   
header("Last-Modified: " . gmdate("D, d M Y H:i:s", 10000) . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");         
header("Cache-Control: post-check=0, pre-check=0", false);           
header("Pragma: no-cache");                                           
header ('Content-Type: image/png');
 
//защита от кэширования
 
$linenum = 2; //линии
$img_arr = array(
                 "codegen.png",//фон изображения. Можете сами нарисовать
                 "codegen0.png"//фон изображения. Можете сами нарисовать
                );
 
$font_arr = array();
$font_arr[0]["fname"] = "vetren_bold.ttf"; //ttf шрифт1
$font_arr[0]["size"] = 16;//размер
$font_arr[1]["fname"] = "zipper1_cyr.ttf"; //ttf шрифт2
$font_arr[1]["size"] = 16;//размер
 
$n = rand(0,sizeof($font_arr)-1);
$img_fn = $img_arr[rand(0, sizeof($img_arr)-1)];
$im = imagecreatefrompng (code_dir . $img_fn); //создаем изображение со случайным фоном
 
for ($i=0; $i<$linenum; $i++)
{
//рисуем линии
    $color = imagecolorallocate($im, rand(0, 150), rand(0, 100), rand(0, 150));
    imageline($im, rand(0, 20), rand(1, 50), rand(150, 180), rand(1, 50), $color);
}
 
$color = imagecolorallocate($im, rand(0, 200), 0, rand(0, 200));
imagettftext ($im, $font_arr[$n]["size"], rand(-4, 4), rand(10, 45), rand(20, 35), $color, code_dir.$font_arr[$n]["fname"], generate_code());//накладываем код
 
for ($i=0; $i<$linenum; $i++)//еще раз линии! Уже сверху.
{
    $color = imagecolorallocate($im, rand(0, 255), rand(0, 200), rand(0, 255));
    imageline($im, rand(0, 20), rand(1, 50), rand(150, 180), rand(1, 50), $color);
}
 
ImagePNG ($im);
ImageDestroy ($im);//ну вот и создано изображение
}
 
img_code();
?>
Пути к файлам перепроверил, все вроде должно работать, а нет изображение не генерируется, в браузере не выводиться, у меня подозрения что в GD нет поддержки png? потому что этот формат не упоминается в phpinfo()
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.03.2015, 09:57
Ответы с готовыми решениями:

Вывод изображения в таблицу PHP
Всем привет, здравствуйте! Вот код с выводом таблицки: &lt;!DOCTYPE html&gt; &lt;html lang=&quot;en&quot;&gt; &lt;head&gt; ...

Загрузка и вывод изображения в PHP
Есть index.php где находится форма &lt;form id=&quot;form&quot; method=&quot;post&quot; action=&quot;action.php&quot; enctype=&quot;multipart/form-data&quot; &gt; &lt;input...

Добавление изображения путем php не зная названия изображения
есть изображения в папке &quot;images&quot; как выложить все изображения на сайт не зная названия картинок, зная только расширения &quot;.jpg&quot;...

19
 Аватар для Seovin
79 / 79 / 36
Регистрация: 28.02.2014
Сообщений: 400
17.03.2015, 12:05
Цитата Сообщение от n0kk Посмотреть сообщение
вроде в порядке
всё в порядке и всё работает

Добавлено через 1 минуту
Цитата Сообщение от n0kk Посмотреть сообщение
Пути к файлам перепроверил
перепроверте ещё раз,
у меня на тесте всё работает
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
17.03.2015, 12:11
n0kk, а как вы его выводите..?
0
0 / 0 / 2
Регистрация: 31.12.2014
Сообщений: 226
17.03.2015, 20:42  [ТС]
<img src="code/my_codegen.php"> или вообще в браузере скрипт запускаю никак не выводит
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
17.03.2015, 20:46
уберите заголовок content-type, проверьте, что вы получаете. Есть ошибки?
0
0 / 0 / 2
Регистрация: 31.12.2014
Сообщений: 226
18.03.2015, 08:46  [ТС]
Убрал заголовок Content-type, получил
Notice: Constant code_dir already defined in /Users/n0kk/Sites/nlp/code/my_codegen.php on line 11
Fatal error: Call to undefined function imagecreatefrompng() in /Users/n0kk/Sites/nlp/code/my_codegen.php on line 62

Добавлено через 1 минуту
первую ошибку исправил осталась
Fatal error: Call to undefined function imagecreatefrompng() in /Users/n0kk/Sites/nlp/code/my_codegen.php on line 62

Добавлено через 9 часов 8 минут
Не пойму никак в чем проблема( помогите разобраться кто нибудь
0
0 / 0 / 2
Регистрация: 31.12.2014
Сообщений: 226
20.03.2015, 19:39  [ТС]
Дело все таки в GD, потому что другого формата файлы тоже не создаются, полазил почитал что какие то ошибки у php Yosemite 10.10
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
20.03.2015, 19:45
ну видимо у вас старовата версия GD2, в которой нет этих функций.
0
0 / 0 / 2
Регистрация: 31.12.2014
Сообщений: 226
21.03.2015, 16:37  [ТС]
Рано я обрадовался, все равно ничего не работает и изображение не выводится, переустановил php с GD, phpinfo() выводит:
GD
GD Support enabled
GD Version bundled (2.1.0 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.3.11
GIF Read Support enabled
GIF Create Support enabled
JPEG Support enabled
libJPEG Version 7
PNG Support enabled
libPNG Version 1.2.51
WBMP Support enabled
XBM Support enabled

Если убрать заголовок header("Content-Type:image/png"); в скрипте генерации изображения выводятся ошибки

Warning: imagecreatefrompng(/Users/n0kk/Sites/code/my_codegen/codegen.png): failed to open stream: No such file or directory in /Users/n0kk/Sites/nlp/code/my_codegen.php on line 60

Warning: imagecolorallocate() expects parameter 1 to be resource, boolean given in /Users/n0kk/Sites/nlp/code/my_codegen.php on line 65

Warning: imageline() expects parameter 1 to be resource, boolean given in /Users/n0kk/Sites/nlp/code/my_codegen.php on line 66

Warning: imagecolorallocate() expects parameter 1 to be resource, boolean given in /Users/n0kk/Sites/nlp/code/my_codegen.php on line 65
Warning: imageline() expects parameter 1 to be resource, boolean given in /Users/n0kk/Sites/nlp/code/my_codegen.php on line 66

Notice: Use of undefined constant code_dir - assumed 'code_dir' in /Users/n0kk/Sites/nlp/code/my_codegen.php on line 70
В чем дело мне не ясно...
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
21.03.2015, 17:20
n0kk, ну здесь уже как раз все понятно. Неверный путь указываете для картинки, а все остальные уже производные из этой ошибки.
Цитата Сообщение от n0kk Посмотреть сообщение
failed to open stream: No such file or directory in /Users/n0kk/Sites/nlp/code/my_codegen.php
Перевод
Ну и константу code_dir он не знает
0
0 / 0 / 2
Регистрация: 31.12.2014
Сообщений: 226
21.03.2015, 18:13  [ТС]

а какой здесь путь писать правильно?
Получается изображения лежат в Users/n0kk/Sites/nlp/code/my_codegen/
0
0 / 0 / 2
Регистрация: 31.12.2014
Сообщений: 226
21.03.2015, 18:36  [ТС]
а скрипт получается в Users/n0kk/Sites/nlp/code/

Добавлено через 21 минуту
KOPOJI, с константой спасибо разобрался
0
0 / 0 / 2
Регистрация: 31.12.2014
Сообщений: 226
21.03.2015, 18:56  [ТС]
не знаю как назвать это, продвижение вперед или назад, при перемещении всех файлов в корень, где лежит скрипт, выводит вот что:

то есть я понимаю он теперь не может найти шрифты?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
21.03.2015, 19:13
правильно понимаете. А в остальном, в общем-то, уже похоже на нормальные заголовки картинки.
0
 Аватар для Seovin
79 / 79 / 36
Регистрация: 28.02.2014
Сообщений: 400
22.03.2015, 01:43
вот мне странно всё-таки у меня всё работает, а у вас нет!?
1
0 / 0 / 2
Регистрация: 31.12.2014
Сообщений: 226
22.03.2015, 04:40  [ТС]
KOPOJI, ну путь к шрифту такой же как и к картинкам но их скрипт невидет почему то.
Seovin, возможно различие в конфигурации PHP? Или вообще системе? у меня вообще до этого стоял OS X Maverick, обновил OS X Yosemite и вообще пришлось весь сервер переустанавливать и менять настройки, а на OS X Maverick без всякого труда генерировал изображения
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
22.03.2015, 10:27
Лучший ответ Сообщение было отмечено n0kk как решение

Решение

Seovin, и что странно? У вас верно путь задается, у ТС-а нет.
n0kk, вангую, что корневая директория у вас совсем другая. Проверьте с помощью __DIR__ или $_SERVER.
1
 Аватар для Seovin
79 / 79 / 36
Регистрация: 28.02.2014
Сообщений: 400
22.03.2015, 18:41
Цитата Сообщение от KOPOJI Посмотреть сообщение
и что странно? У вас верно путь задается, у ТС-а нет.
переть перед вами не буду конечно, знаю что вы на много уровней выше,
но я ж писал в 2-м посте
тс.
Цитата Сообщение от n0kk Посмотреть сообщение
Пути к файлам перепроверил,
я
Цитата Сообщение от Seovin Посмотреть сообщение
перепроверте ещё раз,
0
0 / 0 / 2
Регистрация: 31.12.2014
Сообщений: 226
22.03.2015, 20:13  [ТС]
Все получилось, не знаю конкретно в чем проблема была ну скорее всего в том что шрифты не были установлены вообще, потому что после того как я их установил все заработало. Спасибо большое за помощь, очень мне помогли, не раз обращусь еще на ваш форум, очень помогает и упрощает веб разроботку
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
22.03.2015, 21:02
Seovin, дело не в уровне или еще чем-то. Просто у вас работает - значит, путь верный указывается. А у ТС-а были ошибки, в которых ясно указано, что скрипт не может найти и открыть шрифт. Тут не нужен никакой уровень, нужно минимальное знание английского или забить ошибку в переводчик..
Цитата Сообщение от n0kk Посмотреть сообщение
не знаю конкретно в чем проблема была
проблема в неверном пути к шрифту. Проще всего в таких ситуациях использовать относительные пути - т.е., относительно текущего скрипта. "./path/to/file" - от текущей директории "/path/to/file" - путь от корневой директории. Ну раз уже решили проблему - то и ладно..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.03.2015, 21:02
Помогаю со студенческими работами здесь

Вывод изображения поверх другого изображения
Привет, как правильнее сделать такую манипуляцию нужно на картинке вывести справа вверху КРАСНЫЙ КРУГ как на изображении которое...

Вывод изображения с БД и размер изображения
&lt;div id=&quot;block-3&quot; &lt;?php $query = mysql_query(&quot;SELECT * FROM table_photos&quot; ,$link); $array = mysql_fetch_array($query); do { ...

Отправка формы в php без перегрузки страницы и вывод php кода
У меня есть файл с js и формой, а также php файл. Надо отправить данные из формы в php, обработать их, и исполнить php код и так постоянно....

Вывод данных из нескольких таблиц - SQL, (PHP) - PHP
Помогите, пожалуйста:( Выдает ошибку: Column 'title' in field list is ambiguous Структура таблиц следующая: VEGETABLES id...

php и jquery autocomplete - вывод данных с бд/ php и БД
Здравствуйте друзья и уважаемые гуру php. Есть ли у кого нибудь примеры работы php с jQuery Autocomplete. Чтоб данные выводились с бд и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru