Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 143
1

Как сделать фоновое изображение вместо цвета?

08.04.2013, 21:33. Показов 1913. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Копался в компьютере и нашёл скрипт мониторинга игрового сервера.

Что сейчас: (см. первое вложение)
Какой фон надо: (см. второе вложение)

Поменять нужно фон, который за зелёной полоской и надписями. В коде зелёная полоска - это online.png

Изображение открываю через URL: http://site.ru/status.php?serv... 95.31.4.11

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
79
80
81
<?php
function Server($ip,$port){
    if(!isset($port)) $port = 25565;
    $socket = @fsockopen($ip, $port);
    if ($socket !== false){
        @fwrite($socket, "\xFE");
        $data = "";
        $data = @fread($socket, 1024);
        @fclose($socket);
        if ($data !== false && substr($data, 0, 1) == "\xFF"){
            $info = explode("\xA7", mb_convert_encoding(substr($data,1), "iso-8859-1", "utf-16be"));
            $server['name'] = substr($info[0], 1);
            $server['online'] = $info[1];
            $server['max'] = $info[2];
        } else {
            $server['error'] = 'Ошибка';
        }
    } else {
        $server['error'] = 'Выключен';
    }
return $server;
}
 
function htmlcolor($img,$color){
    sscanf($color, "%2x%2x%2x", $red, $green, $blue);
return ImageColorAllocate($img,$red,$green,$blue);
return($c);
}
 
function right_position($img,$font_size,$font,$text){
    $box = imagettfbbox($font_size, 0, $font, $text);
    $position['x'] = (imagesx($img) - ($box[2]-$box[0]))-7;
    $position['y'] = (imagesy($img) + ($box[1]-$box[7]))/2;
    return $position;
}
 
function left_position($img,$font_size,$font,$text){
    $box = imagettfbbox($font_size, 0, $font, $text);
    $lposition['x'] = 7;
    $lposition['y'] = (imagesy($img) + ($box[0]-$box[7]))/2;
    return $lposition;
}
 
$w = 190;
$h = 20;
$ip = $_GET['ip'];
$port = isset($_GET['port']) ? $_GET['port'] : 25565;
$name = isset($_GET['server']) ? $_GET['server'] : 'Minecraft';
$font = 'arial.ttf';
$font_size = 8;
$font_ok_color = '252525';
$font_error_color = '252525';
$background = 'ebebeb';
 
$img = imagecreatetruecolor($w,$h);
$server = Server($ip,$port);
$font = './'.$font;
if(isset($server['error'])) {
    $bg = imagecreatefrompng('offline.png');
    imagecopy($img, $bg, 0, 0, 0, 0, imagesx($img), imagesy($img));
    $pos = right_position($img,$font_size,$font,$server['error']);
    imagettftext($img, $font_size, 0, $pos['x'], $pos['y'], htmlcolor($img,$font_error_color), $font, $server['error']);
    $lpos = left_position($img,$font_size,$font,$name);
    imagettftext($img, $font_size, 0, $lpos['x'], $lpos['y'], htmlcolor($img,$font_error_color), $font, $name);
    imagedestroy($bg);
} else {
    imagefill($img,0,0,htmlcolor($img,$background));
    $percent = $w/$server['max']*$server['online'];
    $bg = imagecreatefrompng('online.png');
    imagecopymerge($img, $bg, 0, 0, 0, 0, $percent, $w, 100);
    $pos = right_position($img,$font_size,$font,$server['online'].' / '.$server['max']);
    imagettftext($img, $font_size, 0, $pos['x'], $pos['y'], htmlcolor($img,$font_ok_color), $font, $server['online'].' / '.$server['max']);
    $lpos = left_position($img,$font_size,$font,$server['online'].' / '.$server['max']);
    imagettftext($img, $font_size, 0, $lpos['x'], $lpos['y'], htmlcolor($img,$font_ok_color), $font, $name);
    imagedestroy($bg);
}
 
header ("Content-type: image/png");
imagepng($img);
imagedestroy($img);
?>
Помогите реализовать, пожалуйста.
Изображения
  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2013, 21:33
Ответы с готовыми решениями:

Grub4Dos - Как сделать фоновое изображение?
Доброго времени уважаемые пользователи киберфорума! Вот захотел я изобрести свой велосипед с...

Как сделать наложение картинки на фоновое изображение?
В общем думал, скачаю png с прозрачным фоном и все будет кошерно, но нет: Я создал 2 piсbox, один...

Как сделать, чтобы изображение (Не фоновое!) повторялось по горизонтали?
Как сделать, чтобы изображение (Не фоновое!!!) повторялось по горизонтали?

Как сделать для TextBox, RichTextbox фоновое изображение
Обшарил яндекс,гугл не чего путного не нашел для VB.Net Как я понял у текстбокса не предусмотрена...

17
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 143
08.04.2013, 21:37  [ТС] 2
Скрипт показывает заполненность сервера (19 игроков из 120 возможных)
0
Сексуальный
84 / 49 / 1
Регистрация: 02.04.2013
Сообщений: 443
08.04.2013, 23:47 3
Думаю выражу общее мнение если предложу почитать про функции начинающиеся с "image" на великом мануале и походу скрипта выяснить где и что поменять надо.
0
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 143
09.04.2013, 20:52  [ТС] 4
Я читал и нашёл функцию как с прозрачностью, так и с фоном. Но куда их писать?

Скрипт не мой.
0
Сексуальный
84 / 49 / 1
Регистрация: 02.04.2013
Сообщений: 443
09.04.2013, 21:12 5
Их не надо писать, их надо найти и поменять параметры.
0
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 143
10.04.2013, 18:15  [ТС] 6
Что я только не пробовал...
0
Сексуальный
84 / 49 / 1
Регистрация: 02.04.2013
Сообщений: 443
10.04.2013, 18:48 7
Типа сделайте мне готовое решение?
Так и быть, мне как раз надо 10 репы набрать, но сперва вопрос:
Цитата Сообщение от HardSEO Посмотреть сообщение
Что сейчас: (см. первое вложение)
Какой фон надо: (см. второе вложение)
Вижу только одно вложение.
Цитата Сообщение от HardSEO Посмотреть сообщение
Изображение открываю через URL: http://site.ru/status.php?serv... 95.31.4.11
Не понял к чему это и там 404-тая ошибка.

P.S. Я это к тому что вы даже не рассказываете что вы делали и чего вы конкретно не знаете, со стороны это выглядит так: "сделайте мне вот это и это и за бесплатно".
Но пофиг, чего не сделаешь ради репы.
0
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 143
10.04.2013, 19:45  [ТС] 8
http://site.ru/status.php?serv... 95.31.4.11

Это не вложение, а пример. Т.е. я вставляю изображение через <img src="тот адрес" />.
Я эту ссылку указал, чтобы можно было обратиться к серверу для получения количества игроков, если нужно запустить скрипт у себя. Проще говоря: http://путь-к-скрипту/скрипт.php?параметры. Я имел в виду это.

Я вставлял разные функции вместо каждой, поэтому глупо было бы писать здесь 20 моих попыток.

А вложений 2: полоска включенного сервера (Play 19 / 120) и полоска фона, который находится за зелёной полоской и текстом.
0
Сексуальный
84 / 49 / 1
Регистрация: 02.04.2013
Сообщений: 443
10.04.2013, 21:39 9
Цитата Сообщение от HardSEO Посмотреть сообщение
Это не вложение, а пример. Т.е. я вставляю изображение через <img src="тот адрес" />.
Я эту ссылку указал, чтобы можно было обратиться к серверу для получения количества игроков, если нужно запустить скрипт у себя. Проще говоря: http://путь-к-скрипту/скрипт.php?параметры. Я имел в виду это.
Понял, только если я вставлю этот адрес у себя в скрипте то получу тоже самое что вижу в браузере...

Так, ну попробуем сперва так пульнуть: на 67 строке сотрите-уничтожьте это
PHP
1
imagefill($img,0,0,htmlcolor($img,$background));
и напишите это
PHP
1
2
$my_bg_image = 'vtoroe_vlozhenie.png';
imagecopy($img, $my_bg_image, 0, 0, 0, 0, imagesx($my_bg_image), imagesy($my_bg_image));
где вместо "vtoroe_vlozhenie.png" напишите название файла с желаемой картинкой.

Добавлено через 2 минуты
P.S. Картинка должна находиться в том же каталоге где и скрипт.

Добавлено через 27 секунд
2P.S. Помогло?
1
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 143
10.04.2013, 22:09  [ТС] 10
Нет, какая-то ошибка.
0
Сексуальный
84 / 49 / 1
Регистрация: 02.04.2013
Сообщений: 443
10.04.2013, 22:12 11
А все потому-что по вашей ссылке мы не получаем то что надо, как я и говорил.
1
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 143
10.04.2013, 22:15  [ТС] 12
...
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
} else {
    //imagefill($img,0,0,htmlcolor($img,$background));
    $my_bg_image = 'empty.png';
    imagecopy($img, $my_bg_image, 0, 0, 0, 0, imagesx($my_bg_image), imagesy($my_bg_image));
    $percent = $w/$server['max']*$server['online'];
    $bg = imagecreatefrompng('online.png');
    imagecopymerge($img, $bg, 0, 0, 0, 0, $percent, $w, 100);
    $pos = right_position($img,$font_size,$font,$server['online'].' / '.$server['max']);
    imagettftext($img, $font_size, 0, $pos['x'], $pos['y'], htmlcolor($img,$font_ok_color), $font, $server['online'].' / '.$server['max']);
    $lpos = left_position($img,$font_size,$font,$server['online'].' / '.$server['max']);
    imagettftext($img, $font_size, 0, $lpos['x'], $lpos['y'], htmlcolor($img,$font_ok_color), $font, $name);
    imagedestroy($bg);
}
...
0
Сексуальный
84 / 49 / 1
Регистрация: 02.04.2013
Сообщений: 443
10.04.2013, 22:23 13
PHP
58
if(isset($server['error']))
Суть в том что у вас срабатывает это условие и выполняется первый блок, а не тот что указали вы.

Добавлено через 3 минуты
Секундочку, у вас тут функция подключения к серваку описана оказывается, сейчас гляну на нее.

Добавлено через 3 минуты
В общем убедитесь что сервак 95.31.4.11 принимает подключения на порт 25565
1
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 143
10.04.2013, 22:25  [ТС] 14
Меня интересует фон только для того, что после else, потому что у выключенного сервера нет игроков и вся полоска показывается сразу (offline.png).

http://onlymc.ru/php/mon/statu... port=25565
Порт 25565, сервер работает.
0
Сексуальный
84 / 49 / 1
Регистрация: 02.04.2013
Сообщений: 443
10.04.2013, 22:26 15
Дык для того чтобы ее увидеть надо чтобы сервер был включен
1
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 143
10.04.2013, 22:29  [ТС] 16
Он включен, текущий мониторинг на сайте плохо работает и иногда показывает, что сервер выключен. Тут можно проверить статус: http://monitor.zone-game.info/
0
Сексуальный
84 / 49 / 1
Регистрация: 02.04.2013
Сообщений: 443
10.04.2013, 23:38 17
PHP
4
$socket = @fsockopen($ip, $port);
4 строка удалите символ собаки (@), должно будет появиться сообщение об ошибке, в студию ее.
P.S. Надеюсь все действие на тестовом сервере ведется.

Добавлено через 8 минут
Если ничего не измениться, то вместо 4 строки вставте это
PHP
1
2
3
4
$socket = fsockopen($ip, $port, $errno, $errstr);
if (!$socket) {
echo "ERROR: $errno - $errstr<br>\n";
}
Добавлено через 34 минуты
Так, я сразу на два фронта работаю и уже засыпаю так что ногами не бить, пока все что я написал выше можно не делать, я немного разобрался и уже вижу ваши ошибки, сечас поработаю над ними.

Добавлено через 10 минут
Так возвращаем 4 строку в первоначальный вид и удаляем все что дописывали.
Это
PHP
1
2
$my_bg_image = 'vtoroe_vlozhenie.png';
imagecopy($img, $my_bg_image, 0, 0, 0, 0, imagesx($my_bg_image), imagesy($my_bg_image));
меняем на это
PHP
1
2
$my_bg_image = imagecreatefrompng('vtoroe_vlozhenie.png');
imagecopy($img, $my_bg_image, 0, 0, 0, 0, imagesx($my_bg_image), imagesy($my_bg_image));
главное чтоб расширение у вашей картинки было ".png".
А src у вашей картинки со статусом сервера должен быть следующим:
http://onlymc.ru/php/mon/status.php?server=Minecraft&ip=95.31.4.11&port=25565

Добавлено через 8 минут
Хотя сервер может быть и Play, короче на сегодня все, надеюсь разберетесь

Добавлено через 1 минуту
P.S. А редактируете вы все-таки на горячку
1
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 143
11.04.2013, 18:47  [ТС] 18
Вот теперь работает, спасибо
Результат: http://onlymc.ru/php/mon/statu... 95.31.4.11

А если убрать @, то написано "Ошибка". Play - это название одного из наших серверов и они отличаются набором модификаций, которые делают игру разнообразнее и интереснее. Minecraft - это лишь общее название игры.
0
11.04.2013, 18:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.04.2013, 18:47
Помогаю со студенческими работами здесь

Фоновое изображение сделать правильным
сайт wsfox.ru помогите изображения подогнать так, что бы полноценная картинка была, а не как...

Как Сделать PNG (прозрачное изображение) вместо окна формы
В интернете куча всего, прямого решения гугленье не дало. ПРошу помощи зала.

Как сменить фоновое изображение?
Как сменить фоновое изображение при наведении курсора мыши на изображение? Само изображение...

Как сделать, чтобы вместо цвета при рисовании в TImage ставилась фоновая картинка
Здравствуйте. Я начинающий программист, столкнулся с такой проблемой. я Рисую в Imaage рисунок ...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru