#php #gd
#php #gd
Вопрос:
Я пытаюсь создать изображение состояния с одного из наших серверов, но качество «фонового изображения» выглядит действительно плохо. Ниже приведена ссылка на php-файл, после этого приведена ссылка на изображение, которое я использую.
http://www.tijmenschoemaker.nl/steamStatus/monitor.php
По какой-то причине это действительно плохо. Это реальное изображение: http://www.tijmenschoemaker.nl/steamStatus/waspforum.png
<?php
/**
* This code is free software; you can redistribute it and/or modify it under
* the terms of the new BSD License.
*
* Copyright (c) 2010-2013, Sebastian Staudt
*
* @author Sebastian Staudt
* @license http://www.opensource.org/licenses/bsd-license.php New BSD License
* @package steam-condenser
*/
define('STEAM_CONDENSER_PATH', dirname(__FILE__) . '/');
define('STEAM_CONDENSER_VERSION', '1.3.7');
require_once STEAM_CONDENSER_PATH . 'steam/servers/GoldSrcServer.php';
require_once STEAM_CONDENSER_PATH . 'steam/servers/MasterServer.php';
require_once STEAM_CONDENSER_PATH . 'steam/servers/SourceServer.php';
require_once STEAM_CONDENSER_PATH . 'steam/community/SteamId.php';
// Set the enviroment variable for GD
putenv('GDFONTPATH=' . realpath('.'));
// Name the font to be used (note the lack of the .ttf extension)
$font = 'arial.ttf';
try{
$server = new GoldSrcServer('127.0.0.1', 27016);
$server->initialize();
$playersMax = $server->infoHash['maxPlayers'];
$servername = $server->infoHash['serverName'];
$playersOnline = $server->infoHash['numberOfPlayers'];
$serverName = $server->infoHash[ 'serverName'];
$gameVersion = $server->infoHash['gameVersion'];
$serverIP = "149.210.163.62";
$serverPort = $server->infoHash['serverPort'];
$im = imagecreatefrompng('http://www.tijmenschoemaker.nl/steamStatus/waspforum.png')
or die("Cannot Initialize new GD image stream");
$text_color = imagecolorallocate($im, 0,0,0);
imagestring($im, 1, 5, 12, "Server Name ".$serverName, $text_color);
imagestring($im, 1, 5, 25, "Server Adress ".$serverIP.":".$serverPort, $text_color);
imagestring($im, 1, 5, 35, "Status: Online", $text_color);
imagestring($im, 1, 5, 45, "Players ".$playersOnline."/".$playersMax."",$text_color);
imagestring($im, 1, 5, 55, "Version: ".$gameVersion, $text_color);
header("Content-Type: image/png");
imagepng($im);
imagedestroy($im);
}
catch(Exception $e)
{
$im = @imagecreatefrompng('http://www.tijmenschoemaker.nl/steamStatus/waspforum.png')
or die("Cannot Initialize new GD image stream");
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, "Offline" , $text_color);
header("Content-Type: image/png");
imagepng($im);
imagedestroy($im);
}
?>
Ответ №1:
Вы можете установить прозрачный фон с помощью этого кода:
$trans = imagecolorallocatealpha($im, 0, 0, 0, 127);
imagesavealpha($im, true);
imagefill($im, 0, 0, $trans);
Комментарии:
1. Таким образом, я должен каждый раз открывать страницу? Когда я удаляю URL на форуме, он не обновляется автоматически?
Ответ №2:
Эта функция должна принимать параметр ‘compression’. Попробуйте изменить строку —
imagepng($im);
Для:
imagepng($im, NULL, 0);
Комментарии:
1. качество в формате png определяется уровнем сжатия.. значение от 0 до 9 (уровень сжатия: от 0 (без сжатия) до 9) .. ссылка: php.net/manual/en/function.imagepng.php
2. @SyedQarib Спасибо, я перепутал это с
imagejpeg
. Я обновил ответ.