[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сохранение картинки на сервере под именем.
OneFinal
вот такой вопрос, создаю картинку скриптом
function LoadPNG($imgname)
{
$name = $_GET['name'];
$ip = $_GET['ip'];
$dest = imagecreatefromjpeg("http://cs-servera.com.ua/images/maps/cs/$_GET[map].jpg");
$players = $_GET['players'];
$playersmax = $_GET['maxplayers'];
$mapname = $_GET['map'];
$sCount = 22;
$cutParam ='';

if(strlen($name) > $sCount){ // если кол-во символов строки превышает $scount
$name = substr($name,0,$sCount).$cutParam; // обрезаем строку до символа $scount и ставим окончание $cutParam
}

/* Пытаемся открыть */
$im = @imagecreatefrompng($imgname);


$color=ImageColorAllocate($im, 250, 0, 0); //выбор цвета
/* определяем размещение текста на картинке */


$a = '/';
//imagecopy($im, $dest, 10, 50, 10, 30, 468, 60, 75);
imagecopy ($im,$dest, 5, 5, 100, 1, 60, 50);
//вывод текста
imagestring($im, 3, 260, 10, $ip, $color);
imagestring($im, 3, 155, 37, $players, $color);
imagestring($im, 3, 168, 37, $a, $color);
imagestring($im, 3, 250, 37, $mapname, $color);
imagestring($im, 3, 175, 37, $playersmax, $color);
imagestring($im, 3, 100, 10, $name, $color);

/* Если не удалось */
if(!$im)
{
/* Создаем пустое изображение */
$im = imagecreatetruecolor(150, 30);
$bgc = imagecolorallocate($im, 255, 255, 255);
$tc = imagecolorallocate($im, 0, 0, 0);

imagefilledrectangle($im, 0, 0, 150, 30, $bgc);

/* Выводим сообщение об ошибке */
imagestring($im, 1, 5, 5, 'Ошибка загрузки ' . $imgname, $tc);
}

return $im;
}

header('Content-Type: image/png');

$img = LoadPNG('1.png');

imagepng($img);
imagedestroy($img);


получаеться ссылка вот такого вида (что бы заполнило все что нужно

/image.php?name=CSFREENET%20|%20RESPAWN&ip=csfreenet.com.ua:27015&map=de_dust2002&players=21&maxplayers=25


но, некоторые добрые люди подставят сюда свои значения и будет на халяву мониторинг, хотелось бы сделать так, что бы картинка при обновлении кеша сохранялась на сервер, только как сделать само сохранение я не знаю, помогите :)



Спустя 16 минут, 47 секунд (1.09.2012 - 15:12) OneFinal написал(а):
Сохраняю вот так, но дает ошибку файл не читаймый

	$url="http://localhost/lgsl/image.php?name={$server['s']['name']}&ip={$server['b']['ip']}:{$server['b']['c_port']}&map={$server['s']['map']}&players={$server['s']['players']}&maxplayers={$server['s']['playersmax']}";
$img=file_get_contents($url);
//$arr=parse_url ($url);
$name=basename("web-$id");
file_put_contents("C:/Program Files (x86)/VertrigoServ/www/lgsl/lgsl_files/files/".$name.".png",$img);

Спустя 8 минут, 46 секунд (1.09.2012 - 15:21) red devil написал(а):
используй конкатенацию


//.......
$dest = imagecreatefromjpeg("http://cs-servera.com.ua/images/maps/cs/" . $_GET['map'] .".jpg");
//.......

От правильного пути много что зависит

Спустя 7 минут, 26 секунд (1.09.2012 - 15:28) OneFinal написал(а):
картинка сама генерируется нормально, но вот сохраняться не хочет smile.gif

Спустя 3 минуты, 13 секунд (1.09.2012 - 15:32) red devil написал(а):
OneFinal я в этом не спец, но может это все от того, что картинка берется в формате jpg а сохраняется в png?

Спустя 2 минуты, 48 секунд (1.09.2012 - 15:34) OneFinal написал(а):
исходный файл png, на него накладывается jpg ( Работает отлично пруф http://dump.ru/file/5839996 )

Спустя 21 минута, 42 секунды (1.09.2012 - 15:56) red devil написал(а):
file_put_contents - записывает в файл строку, как оно тебе сохранит картику.
Попробуй

copy($url, "C:/Program Files (x86)/VertrigoServ/www/lgsl/lgsl_files/files/".$name.".png");

Спустя 8 минут, 12 секунд (1.09.2012 - 16:04) OneFinal написал(а):
все дело в этой строчке
$url="http://localhost/lgsl/image.php?name={$server['s']['name']}&ip={$server['b']['ip']}:{$server['b']['c_port']}&map={$server['s']['map']}&players={$server['s']['players']}&maxplayers={$server['s']['playersmax']}";


если вписывать просто значения то картинка сохраняется.

Спустя 14 минут, 8 секунд (1.09.2012 - 16:18) red devil написал(а):
Стразу надо было говорить
$url="http://localhost/lgsl/image.php?name=" . $server['s']['name'] . "&ip=" . $server['b']['ip'] . ":" . $server['b']['c_port'] . "&map=" . $server['s']['map'] . "&players=" . $server['s']['players'] . "&maxplayers=" . $server['s']['playersmax'];

Спустя 5 минут, 12 секунд (1.09.2012 - 16:24) OneFinal написал(а):
неа, все ровно, пробывал так тот же результат.
$servernames = $server['s']['name'];
$ips = $server['b']['ip'];
$ports = $server['b']['c_port'];
$maps = $server['s']['map'];
$playerss = $server['s']['players'];
$maxplayerss=$server['s']['playersmax'];

http://localhost/lgsl/image.php?name=$servernames&ip=$ips:$ports&map=$maps&players=$playerss& amp;maxplayers=$maxplayerss

Спустя 1 минута, 58 секунд (1.09.2012 - 16:26) OneFinal написал(а):
Цитата (OneFinal @ 1.09.2012 - 14:24)
неа, все ровно, пробывал так тот же результат.
$servernames = $server['s']['name'];
$ips = $server['b']['ip'];
$ports = $server['b']['c_port'];
$maps = $server['s']['map'];
$playerss = $server['s']['players'];
$maxplayerss=$server['s']['playersmax'];

http://localhost/lgsl/image.php?name=$servernames&ip=$ips:$ports&map=$maps&players=$playerss& amp; amp;maxplayers=$maxplayerss

с таким вариантом, картинка выводиться но не сохраняется .

Спустя 5 минут, 3 секунды (1.09.2012 - 16:31) red devil написал(а):
Цитата
с таким вариантом, картинка выводиться но не сохраняется .

а теперь читай что я тебе писал тут
Цитата
file_put_contents - записывает в файл строку, как оно тебе сохранит картику.
Попробуй

copy($url, "C:/Program Files (x86)/VertrigoServ/www/lgsl/lgsl_files/files/".$name.".png");

Спустя 2 минуты, 15 секунд (1.09.2012 - 16:33) OneFinal написал(а):
так и стоит.
	$url="http://localhost/lgsl/image.php?name=" . $server['s']['name'] . "&ip=" . $server['b']['ip'] . ":" . $server['b']['c_port'] . "&map=" . $server['s']['map'] . "&players=" . $server['s']['players'] . "&maxplayers=" . $server['s']['playersmax'];$img=file_get_contents($url);
//$arr=parse_url ($url);
$name="web-$id";
copy($url, "C:/Program Files (x86)/VertrigoServ/www/lgsl/lgsl_files/files/".$name.".png");

Спустя 3 часа, 40 минут, 56 секунд (1.09.2012 - 20:14) red devil написал(а):
Цитата
так и стоит.

Это означает работает или не работает?

Спустя 8 минут, 10 секунд (1.09.2012 - 20:22) OneFinal написал(а):
не работает.

Спустя 14 минут, 28 секунд (1.09.2012 - 20:36) red devil написал(а):
У меня работает. Тести
<?php

if(copy("http://cs-servera.com.ua/images/maps/cs/de_dust.jpg", "test.jpg"))
{
echo 'uraa';

}
else
{
echo 'ne ura';
}

Спустя 17 минут, 50 секунд (1.09.2012 - 20:54) OneFinal написал(а):
сработало.

Спустя 9 минут, 32 секунды (1.09.2012 - 21:04) red devil написал(а):
OneFinal да, но только я сохранял в формате jpg а тебе нужно в png помни

Спустя 4 минуты, 24 секунды (1.09.2012 - 21:08) OneFinal написал(а):
дык, смотри я же говорил что строчка такого типа срабатывает.
http://localhost/lgsl/image.php?name=Name&ip=124.0.0.1:24015&map=LOL&players=8&maxplayers=16

а когда подставляешь переменные то нет

http://localhost/lgsl/image.php?name=" .$servernames . "&ip=" .$ips . ":" .$ports . "&map=" .$maps . "&players=" .$playerss . "&maxplayers=" .$maxplayerss . "

Спустя 31 секунда (1.09.2012 - 21:09) OneFinal написал(а):
и когда вот так пишешь тоже нет
http://localhost/lgsl/image.php?name=" . $server['s']['name'] . "&ip=" . $server['b']['ip'] . ":" . $server['b']['c_port'] . "&map=" . $server['s']['map'] . "&players=" . $server['s']['players'] . "&maxplayers=" . $server['s']['playersmax']

Спустя 2 часа, 45 минут, 29 секунд (1.09.2012 - 23:54) dron4ik написал(а):
проверь echo $url... может потерял что то...


file_put_contents - записывает и картинки... он всемогущ)

Спустя 5 минут, 41 секунда (2.09.2012 - 00:00) OneFinal написал(а):
проверял, все отлично, если просто скопировать строчку что выведет echo срабатывает картинка генерируется, НО если с переменными то нет, мб дело в кодировке где то ?

Спустя 20 минут, 40 секунд (2.09.2012 - 00:21) dron4ik написал(а):
C:/Program Files (x86)/VertrigoServ/www/lgsl/lgsl_files/files/???

попробуй через Z:

Спустя 8 часов, 42 минуты, 4 секунды (2.09.2012 - 09:03) OneFinal написал(а):
в каком смысле ?

Спустя 1 час, 45 минут, 27 секунд (2.09.2012 - 10:48) red devil написал(а):
OneFinal попробуй вместо этого:
C:/Program Files (x86)/VertrigoServ/www/lgsl/lgsl_files/files/???

Это:
$_SERVER['DOCUMENT_ROOT'] . "lgsl/lgsl_files/files/???";

Спустя 17 минут, 7 секунд (2.09.2012 - 11:05) OneFinal написал(а):
Permission denied in
biggrin.gif
это стоит не на сайте а на компе, и как мне права то поставить ?)

Спустя 1 минута, 46 секунд (2.09.2012 - 11:07) pak написал(а):
Цитата (red devil @ 2.09.2012 - 08:48)
OneFinal попробуй вместо этого:
C:/Program Files (x86)/VertrigoServ/www/lgsl/lgsl_files/files/???

Это:
$_SERVER['DOCUMENT_ROOT'] . "lgsl/lgsl_files/files/???";

думаю лутше так:
str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT']) .'/')

Спустя 3 минуты, 9 секунд (2.09.2012 - 11:10) OneFinal написал(а):
если я правильно понял

copy($url, str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT']) .'/' . "lgsl/lgsl_files/files/".$name.".png");

но так тоже нет, отдает файл весом в 29кб и он не читается.

Спустя 22 минуты, 12 секунд (2.09.2012 - 11:32) dron4ik написал(а):
file_put_contents($url, str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT']) .'/' . "lgsl/lgsl_files/files/".$name.".png");

Спустя 16 минут, 1 секунда (2.09.2012 - 11:48) OneFinal написал(а):
$url="http://localhost/lgsl/image.php?name=" . $server['s']['name'] . "&ip=" . $server['b']['ip'] . ":" . $server['b']['c_port'] . "&map=" . $server['s']['map'] . "&players=" . $server['s']['players'] . "&maxplayers=" . $server['s']['playersmax'];	
c такой строкой дает ошибку
Warning: file_put_contents(http://localhost/lgsl/image.php?name=АДРЕНАЛИНЧИК ©&ip=62.122.213.36:27333&map=de_nuke&players=15&maxplayers=32) [function.file-put-contents]: failed to open stream: HTTP wrapper does not support writeable connections in C:\Program Files (x86)\VertrigoServ\www\lgsl\lgsl_files\lgsl_details.php on line 401


с такой тоже самое


$url="http://localhost/lgsl/image.php?name=$servernames&ip=$ips:$ports&map=$maps&players=$playerss&maxplayers=$maxplayerss";

Спустя 18 минут, 3 секунды (2.09.2012 - 12:06) OneFinal написал(а):
кстате в ошибке крокозябры.

Спустя 3 минуты, 31 секунда (2.09.2012 - 12:10) OneFinal написал(а):
решил проблему с крокозябрами
вот так

$url=urldecode ("http://localhost/lgsl/image.php?name=$servernames&ip=$ips:$ports&map=$maps&players=$playerss&maxplayers=$maxplayerss");


но все же ошибка не прошла.

Спустя 1 час, 23 минуты, 30 секунд (2.09.2012 - 13:33) red devil написал(а):
OneFinal как я понял, то ошибка говорит - "путь не должен начинаться с HTTP" тоесть он по http файлы не читает

Спустя 27 минут, 49 секунд (2.09.2012 - 14:01) OneFinal написал(а):
Цитата (red devil @ 2.09.2012 - 11:33)
OneFinal как я понял, то ошибка говорит - "путь не должен начинаться с HTTP" тоесть он по http файлы не читает

хорошо, убрал http://
Теперь ошибка
Warning: file_put_contents(localhost/lgsl/image.php?name=АДРЕНАЛИНЧИК ©&ip=62.122.213.36:27333&map=de_cbble&players=28&maxplayers=32) [function.file-put-contents]: failed to open stream: No such file or directory in C:\Program Files (x86)\VertrigoServ\www\lgsl\lgsl_files\lgsl_details.php on line 402

хотя директория есть

Спустя 34 минуты, 15 секунд (2.09.2012 - 14:35) red devil написал(а):
Что то не так в файле lgsl_details.php на линии 402 смотри

Спустя 16 минут, 24 секунды (2.09.2012 - 14:52) OneFinal написал(а):
не держите меня за идиота епт
402 строка

file_put_contents($url, str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT']) .'/' . "lgsl/lgsl_files/files/".$name.".png"); 

вывел данные из $url получил такое
http://localhost/lgsl/image.php?name=АДРЕНАЛИНЧИК ©&ip=62.122.213.36:27333&map=de_dust&players=30&maxplayers=32
(без http:// пробовал тоже фонарь )

$url="localhost/lgsl/image.php?name=" . $server['s']['name'] . "&ip=" . $server['b']['ip'] . ":" . $server['b']['c_port'] . "&map=" . $server['s']['map'] . "&players=" . $server['s']['players'] . "&maxplayers=" . $server['s']['playersmax'];		
/

Спустя 28 минут, 17 секунд (2.09.2012 - 15:20) sergeiss написал(а):
Цитата (OneFinal @ 1.09.2012 - 17:12)
file_put_contents("C:/Program Files (x86)/VertrigoServ/www/lgsl/lgsl_files/files/".$name.".png",$img);

Уже 3-я страница, но никто не предложил посмотреть, что же там в строке с именем (или я не увидел этого предложения?)

// вот это
file_put_contents("C:/Program Files (x86)/VertrigoServ/www/lgsl/lgsl_files/files/".$name.".png",$img);

// замени на
$file_name="C:/Program Files (x86)/VertrigoServ/www/lgsl/lgsl_files/files/".$name.".png";
echo $file_name.'<br>';

И посмотри, какое же на самом деле имя файла ты пытаешься передать. Скорее всего, у тебя там запрещенные символы есть.

Спустя 1 час, 2 минуты, 23 секунды (2.09.2012 - 16:23) OneFinal написал(а):
сделал но не много по другому, из справочника
bool imagepng ( resource $image [, string $filename [, int $quality [, int $filters ]]] )


image

Ресурс изображения, полученный одной из функций создания изображений, например, такой как imagecreatetruecolor().
filename

Путь для сохранения файла. Если не установлен или равен NULL, изображение будет выведено в поток вывода в бинарном виде.

Замечание:

Недопустимо передавать NULL, если не используются аргументы quality и filters.

quality

Степень сжатия: от 0 (нет сжатия) до 9.
filters

Позволяет уменьшить размер PNG файла. Это битовая маска, значением которой может быть комбинация констант PNG_FILTER_XXX.
Для включения или выключения всех фильтров удобно воспользоваться константами PNG_NO_FILTER или PNG_ALL_FILTERS соответственно.


Спустя 15 минут, 1 секунда (2.09.2012 - 16:38) OneFinal написал(а):
imagepng($img,$s.$id.'.png');
вот так вот переменная $s содержит путь. :)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.