写了个PHP版Minecraft皮肤获取与生成头像并开源

/ 0评 / 1

本 博 惯 例

前言

由于Mojang之前改了API,Github上没有几个完全可用的,然后之前开发了一个C#Winform版也开源了,开源地址,然后想想为什么不开发一个Web版,还方便使用,也可以作为一个API请求使用。

开发

之前在这篇文章 无聊写了个Minecraft皮肤获取,分享一些API 写过了Mojang API的请求获取到皮肤的全部步骤,这里就不再详细的说了。

首先请求站点传输参数 name 即Minecraft ID,例如要请求玩家Jeb_的信息
首先通过 $_GET['name'] 来获取到玩家的名字,然后拼接API请求URL

$mojang_uuid = curl_get_https('https://api.mojang.com/users/profiles/minecraft/'.$_GET['name']);
$de_uuid = json_decode($mojang_uuid, true);

通过上面解码返回的JSON获取玩家的UUID继续下一次请求与拼接

$player_profile= curl_get_https('https://sessionserver.mojang.com/session/minecraft/profile/' . $de_uuid['id']);
$de_profile = json_decode($player_profile, true);

之前也介绍过了玩家的皮肤数据JSON是通过BASE64加密的,我们需要解码并解析,这里写成一句就行。

$de_textures = json_decode(base64_decode($de_profile['properties'][0]['value']), true);

之后我们就可以使用上面解析的最终JSON来获取我们的玩家数据

$de_textures['textures']['SKIN']['url'] //皮肤
$de_textures['textures']['CAPE']['url'] //披风

生成头像

我们知道Minecraft的API里并没有头像这一选项,但是我们可以通过截取皮肤来获取头像位置的图片,将其展示出来

//裁剪并缩放创建头像
$copyskin = imagecreatetruecolor($size_avatar, $size_avatar);
$originalskin = imagecreatefromstring(file_get_contents($de_textures['textures']['SKIN']['url']));
//imagecopyresized 参数为 目标图像,被拷贝的图像,目标X坐标,目标Y坐标,拷贝X坐标,拷贝Y坐标,拷贝的宽度,拷贝的高度
imagecopyresized($copyskin, $originalskin, 0, 0, 8, 8, $size_avatar, $size_avatar, 8, 8);

通过PS放大图片可见,头的开始顶部位置和左侧位置均为8个格,那么上面 imagecopyresized 的拷贝X,Y坐标则为8,8,那么玩家头部的宽度和高度也为8格,那么由此得到上面那句代码。

开源

没什么技术含量,最近各种重新学习以前偶尔用用的编程语言,练手之作
GitHub - PHP-Minecraft-Skin

成品效果

发表评论

电子邮件地址不会被公开。 必填项已用*标注