v2 update, tidy up codes and fixed api error
This commit is contained in:
parent
83a1681634
commit
604590c1ef
@ -9,10 +9,11 @@
|
||||
|
||||
#### 安装教程
|
||||
|
||||
1. 配置任意编译环境
|
||||
2. 配置带有GD库的PHP7.2环境
|
||||
1. 下载字体并修改对应字体文件路径(推荐HarmonyOS Sans)
|
||||
2. 配置带有GD库的PHP8.1环境
|
||||
3. 设置站点
|
||||
4. 上传本项目的文件
|
||||
5. 访问调用
|
||||
|
||||
|
||||
#### 参与贡献
|
||||
|
232
api.php
232
api.php
@ -1,232 +0,0 @@
|
||||
<?php
|
||||
//Copyright GHINK Network Studio.
|
||||
//LGPLv3.0
|
||||
//---------------------------------------------------------------------//
|
||||
error_reporting(0);//抑制报错
|
||||
$stream_opts = [//防止https证书错误
|
||||
"ssl" => [
|
||||
"verify_peer"=>false,
|
||||
"verify_peer_name"=>false,
|
||||
]
|
||||
];
|
||||
//读取API JSON并转为数组
|
||||
$teamjson=file_get_contents("http://api.ghink.net/fah/json/?team=".$_GET['team'],false, stream_context_create($stream_opts));
|
||||
$donorjson=file_get_contents("http://api.ghink.net/fah/json/?donor=".$_GET['donor'],false, stream_context_create($stream_opts));
|
||||
$team=json_decode($teamjson, true);
|
||||
$donor=json_decode($donorjson, true);
|
||||
//---------------------------------------------------------------------//
|
||||
foreach ($team as $key => $value) { //遍历数组,读取数据
|
||||
if($key='name'){
|
||||
$teamname=$team['name'];
|
||||
}
|
||||
}
|
||||
foreach ($team as $key => $value) {
|
||||
if($key='team'){
|
||||
$teamid=$team['team'];
|
||||
}
|
||||
}
|
||||
foreach ($team as $key => $value) {
|
||||
if($key='rank'){
|
||||
$teamrank=$team['rank'];
|
||||
}
|
||||
}
|
||||
foreach ($team as $key => $value) {
|
||||
if($key='wus'){
|
||||
$teamwus=$team['wus'];
|
||||
}
|
||||
}
|
||||
foreach ($team as $key => $value) {
|
||||
if($key='credit'){
|
||||
$teamscores=$team['credit'];
|
||||
}
|
||||
}
|
||||
foreach ($donor as $key => $value) {
|
||||
if($key='name'){
|
||||
$name=$donor['name'];
|
||||
}
|
||||
}
|
||||
foreach ($donor as $key => $value) {
|
||||
if($key='rank'){
|
||||
$rank=$donor['rank'];
|
||||
}
|
||||
}
|
||||
foreach ($donor as $key => $value) {
|
||||
if($key='wus'){
|
||||
$wus=$donor['wus'];
|
||||
}
|
||||
}
|
||||
foreach ($donor as $key => $value) {
|
||||
if($key='credit'){
|
||||
$scores=$donor['credit'];
|
||||
}
|
||||
}
|
||||
foreach ($donor as $key => $value) {
|
||||
if($key='last'){
|
||||
$lastwus=$donor['last'];
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------//
|
||||
if($_GET['mode'] == 'advanced'){//判断是否是高级模式
|
||||
if($_GET['donor'] == null){
|
||||
echo '{"error": "10001"}';
|
||||
}elseif($_GET['team'] == null){
|
||||
echo '{"error": "10001"}';
|
||||
}else{
|
||||
if($_GET['height'] == null){//判断是否有提交画布大小
|
||||
if($_GET['weight'] == null){
|
||||
$canvas = imagecreatetruecolor(465, 92);//载入默认画布
|
||||
$weight = 465;
|
||||
$height = 95;
|
||||
$weightdefault = 465;
|
||||
$heightdefault = 95;
|
||||
}else{
|
||||
$error = 10001;
|
||||
}
|
||||
}elseif($_GET['weight'] == null){
|
||||
if($_GET['height'] == null){
|
||||
$canvas = imagecreatetruecolor(465, 92);//载入默认画布
|
||||
$weight = 465;
|
||||
$height = 95;
|
||||
$weightdefault = 465;
|
||||
$heightdefault = 95;
|
||||
}else{
|
||||
$error = 10001;
|
||||
}
|
||||
}else{
|
||||
$canvas = imagecreatetruecolor($_GET['weight'], $_GET['height']);//根据提交的参数载入画布
|
||||
$weightdefault = $_GET['weight'];
|
||||
$heightdefalut = $_GET['height'];
|
||||
}
|
||||
$background = imagecolorallocatealpha($canvas, 0, 0, 0, 127);//设置背景色
|
||||
imagefill($canvas, 0, 0, $background);//填充透明色
|
||||
imagecolortransparent($canvas, $background);//设置背景色
|
||||
if($_GET['fnt'] == null){//判断是否有提交自定义字体
|
||||
$text_fonts = 'fnt/default.ttf';//设置默认字体
|
||||
}else{
|
||||
$text_fonts = 'fnt/'.$_GET['fnt'];//根据提交的字体地址载入自定义字体
|
||||
}
|
||||
if($_GET['red'] == null){//判断是否有提交自定义字体颜色
|
||||
if($_GET['green'] == null){
|
||||
if($_GET['blue'] == null){
|
||||
$color = imagecolorallocate($canvas, 255, 255, 255);//设置默认文字颜色
|
||||
}else{
|
||||
$error = 10001;
|
||||
}
|
||||
}else{
|
||||
$error = 10001;
|
||||
}
|
||||
}else{
|
||||
if($_GET['green'] == null){
|
||||
}else{
|
||||
if($_GET['blue'] == null){
|
||||
}else{
|
||||
$color = imagecolorallocate($canvas, $_GET['red'], $_GET['green'], $_GET['blue']);//设置自定义文字颜色
|
||||
}
|
||||
}
|
||||
}
|
||||
if($_GET['textsize'] == null){//判断是否有提交自定义字体
|
||||
$text_size = 7;//设置默认字体大小
|
||||
}else{
|
||||
$text_size = $_GET['textsize'];//设置自定义字体大小
|
||||
}
|
||||
if($_GET['img'] == null){//判断是否有提交自定义底图
|
||||
$logo_url = 'img.png';//设置默认源图片
|
||||
}else{
|
||||
$logo_url = $_GET['img'];//设置自定义源图片
|
||||
}
|
||||
$logo = file_get_contents($logo_url);//读取源文件
|
||||
$logo_img = imagecreatefromstring($logo);//解析为图片
|
||||
if($_GET['imgx'] == null){//判断是否有提交自定义底图位置
|
||||
if($_GET['imgy'] == null){
|
||||
$imgx = 0;//设置默认底图位置
|
||||
$imgy = 0;
|
||||
}else{
|
||||
$error = 10001;
|
||||
}
|
||||
}else{
|
||||
if($_GET['imgy'] == null){
|
||||
$error = 10001;
|
||||
}else{
|
||||
$imgx = $_GET['imgx'];//设置自定义底图位置
|
||||
$imgy = $_GET['imgy'];
|
||||
}
|
||||
}
|
||||
if($_GET['putweight'] == null){
|
||||
if($_GET['putheight'] == null){
|
||||
$weight = $weightdefault;
|
||||
$height = $heightdefault;
|
||||
}else{
|
||||
$error = 10001;
|
||||
}
|
||||
}else{
|
||||
if($_GET['putheight'] == null){
|
||||
$error = 10001;
|
||||
}else{
|
||||
$weight = $_GET['putweight'];
|
||||
$height = $_GET['putheight'];
|
||||
}
|
||||
}
|
||||
imagecopyresampled($canvas, $logo_img, $imgx, $imgy, 0, 0, $weight, $height, imagesx($logo_img), imagesy($logo_img));//覆盖图层
|
||||
//---------------------------------------------------------------------//
|
||||
//团队部分
|
||||
imagettftext($canvas, $text_size, 0, 90, 13, $color, $text_fonts, $teamname);//团队名称
|
||||
imagettftext($canvas, $text_size, 0, 100, 30, $color, $text_fonts, $teamid);//团队编号
|
||||
imagettftext($canvas, $text_size, 0, 100, 48, $color, $text_fonts, $teamrank);//团队排名
|
||||
imagettftext($canvas, $text_size, 0, 110, 65, $color, $text_fonts, $teamwus);//已完成的任务
|
||||
imagettftext($canvas, $text_size, 0, 90, 82, $color, $text_fonts, $teamscores);//总积分
|
||||
//---------------------------------------------------------------------//
|
||||
//个人部分
|
||||
imagettftext($canvas, $text_size, 0, 280, 13, $color, $text_fonts, $name);//用户名
|
||||
imagettftext($canvas, $text_size, 0, 290, 32, $color, $text_fonts, $rank);//用户排名
|
||||
imagettftext($canvas, $text_size, 0, 300, 50, $color, $text_fonts, $wus);//已完成任务
|
||||
imagettftext($canvas, $text_size, 0, 280, 68, $color, $text_fonts, $scores);//总积分
|
||||
imagettftext($canvas, $text_size, 0, 310, 82, $color, $text_fonts, $lastwus);//最近一次完成
|
||||
//---------------------------------------------------------------------//
|
||||
if($error == null){//判断是否有错误
|
||||
header("content-type:image/png");//设置网页为图片
|
||||
imagepng($canvas);//输出图片
|
||||
imagedestroy($canvas);//关闭进程
|
||||
}elseif($error == 10001){
|
||||
header("Content-type:application/json;charset=utf-8");
|
||||
echo '{"error": "10001"}';
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if($_GET['donor'] == null){
|
||||
header("Content-type:application/json;charset=utf-8");
|
||||
echo '{"error": "10001"}';
|
||||
}elseif($_GET['team'] == null){
|
||||
header("Content-type:application/json;charset=utf-8");
|
||||
echo '{"error": "10001"}';
|
||||
}else{
|
||||
$canvas = imagecreatetruecolor(465, 92);//载入画布
|
||||
$background = imagecolorallocatealpha($canvas, 0, 0, 0, 127);//设置背景色
|
||||
imagefill($canvas, 0, 0, $background);//填充透明色
|
||||
imagecolortransparent($canvas, $background);//设置背景色
|
||||
$text_fonts = 'fnt/default.ttf';//设置字体
|
||||
$color = imagecolorallocate($canvas, 255, 255, 255);//设置文字颜色
|
||||
$text_size = 7;//设置文字大小
|
||||
$logo_url = 'img.png';//设置源图片目录
|
||||
$logo = file_get_contents($logo_url);//读取源文件
|
||||
$logo_img = imagecreatefromstring($logo);//解析为图片
|
||||
imagecopyresampled($canvas, $logo_img, 0, 0, 0, 0, 465, 92, imagesx($logo_img), imagesy($logo_img));//覆盖图层
|
||||
//---------------------------------------------------------------------//
|
||||
//团队部分
|
||||
imagettftext($canvas, $text_size, 0, 90, 13, $color, $text_fonts, $teamname);//团队名
|
||||
imagettftext($canvas, $text_size, 0, 100, 30, $color, $text_fonts, $teamid);//团队编号
|
||||
imagettftext($canvas, $text_size, 0, 100, 48, $color, $text_fonts, $teamrank);//团队排名
|
||||
imagettftext($canvas, $text_size, 0, 110, 65, $color, $text_fonts, $teamwus);//已完成的任务
|
||||
imagettftext($canvas, $text_size, 0, 90, 82, $color, $text_fonts, $teamscores);//总积分
|
||||
//---------------------------------------------------------------------//
|
||||
//个人部分
|
||||
imagettftext($canvas, $text_size, 0, 280, 13, $color, $text_fonts, $name);//用户名
|
||||
imagettftext($canvas, $text_size, 0, 290, 32, $color, $text_fonts, $rank);//用户排名
|
||||
imagettftext($canvas, $text_size, 0, 300, 50, $color, $text_fonts, $wus);//已完成任务
|
||||
imagettftext($canvas, $text_size, 0, 280, 68, $color, $text_fonts, $scores);//总积分
|
||||
imagettftext($canvas, $text_size, 0, 310, 82, $color, $text_fonts, $lastwus);//最近一次完成
|
||||
//---------------------------------------------------------------------//
|
||||
header("content-type:image/png");//设置网页为图片
|
||||
imagepng($canvas);//输出图片
|
||||
imagedestroy($canvas);//关闭进程
|
||||
}
|
||||
}
|
BIN
backs/en_US.png
Normal file
BIN
backs/en_US.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
69
index.php
Normal file
69
index.php
Normal file
@ -0,0 +1,69 @@
|
||||
<?php
|
||||
$DEBUG = false;
|
||||
$langs = array("zh_CN", "en_US");
|
||||
|
||||
if (!isset($_GET["donor"]) || !isset($_GET["team"])) {
|
||||
exit("empty field");
|
||||
}
|
||||
|
||||
if (!isset($_GET["lang"]) || !in_array($_GET["lang"], $langs)) {
|
||||
$lang = "zh_CN";
|
||||
} else {
|
||||
$lang = $_GET["lang"];
|
||||
}
|
||||
|
||||
// Get donor
|
||||
$donor = $_GET["donor"];
|
||||
|
||||
// Setting foor ssl
|
||||
$arr_context_options = array(
|
||||
"ssl" => array(
|
||||
"verify_peer" => false,
|
||||
"verify_peer_name" => false,
|
||||
"allow_self_signed" => true,
|
||||
) ,
|
||||
);
|
||||
|
||||
// Request for data
|
||||
$donor_data = file_get_contents("https://api.foldingathome.org/user/".$donor, false, stream_context_create($arr_context_options)) or die("api failed");
|
||||
$donor_object = json_decode($donor_data, true);
|
||||
if ($DEBUG) var_dump($donor_object);
|
||||
|
||||
$team_data = file_get_contents("https://api.foldingathome.org/team/".$_GET["team"], false, stream_context_create($arr_context_options)) or die("api failed");
|
||||
$team_object = json_decode($donor_data, true);
|
||||
if ($DEBUG) var_dump($team_object);
|
||||
|
||||
// Load canvas
|
||||
$canvas = imagecreatetruecolor(465, 92);
|
||||
// Set background color
|
||||
$background = imagecolorallocatealpha($canvas, 0, 0, 0, 127);
|
||||
// Fill with TRN
|
||||
imagefill($canvas, 0, 0, $background);
|
||||
imagecolortransparent($canvas, $background);
|
||||
// Set font
|
||||
$text_fonts = 'fonts/HarmonyOS_Sans_SC_Bold.ttf'; // font
|
||||
$color = imagecolorallocate($canvas, 255, 255, 255); // color
|
||||
$text_size = 7; // size
|
||||
// Set background picture
|
||||
$logo_url = 'backs/'.$lang.'.png';
|
||||
$logo = file_get_contents($logo_url);
|
||||
$logo_img = imagecreatefromstring($logo);
|
||||
imagecopyresampled($canvas, $logo_img, 0, 0, 0, 0, 465, 92, imagesx($logo_img), imagesy($logo_img));
|
||||
|
||||
// For team
|
||||
imagettftext($canvas, $text_size, 0, 90, 13, $color, $text_fonts, $team_object["name"]); // name
|
||||
imagettftext($canvas, $text_size, 0, 100, 30, $color, $text_fonts, $team_object["id"]); // id
|
||||
imagettftext($canvas, $text_size, 0, 100, 48, $color, $text_fonts, $team_object["rank"]); // rank
|
||||
imagettftext($canvas, $text_size, 0, 110, 65, $color, $text_fonts, $team_object["wus"]); // wus
|
||||
imagettftext($canvas, $text_size, 0, 90, 82, $color, $text_fonts, $team_object["score"]); // score
|
||||
|
||||
// For donor
|
||||
imagettftext($canvas, $text_size, 0, 280, 13, $color, $text_fonts, $team_object["name"]); // name
|
||||
imagettftext($canvas, $text_size, 0, 290, 32, $color, $text_fonts, $team_object["rank"]); // rank
|
||||
imagettftext($canvas, $text_size, 0, 300, 50, $color, $text_fonts, $team_object["wus"]); // wus
|
||||
imagettftext($canvas, $text_size, 0, 280, 68, $color, $text_fonts, $team_object["score"]); // score
|
||||
imagettftext($canvas, $text_size, 0, 310, 82, $color, $text_fonts, $team_object["last"]); // last done
|
||||
|
||||
if (!$DEBUG) header("content-type:image/png");
|
||||
imagepng($canvas);
|
||||
imagedestroy($canvas);
|
Loading…
Reference in New Issue
Block a user