publicuhc/skin-cache

本地提供Minecraft皮肤

1.0.1 2014-07-22 18:46 UTC

This package is not auto-updated.

Last update: 2024-09-24 02:49:18 UTC


README

SensioLabsInsight

缓存Minecraft皮肤/图标并在本地提供。

依赖关系

所有依赖项都由composer处理。建议安装cURL,如果已安装,则会使用它,但不是必需的。

用法

有一个名为 PublicUHC\SkinCache\SimpleSkinFetcher 的类,它使用一些默认类,可以像这样使用

$fetcher = new SimpleSkinFetcher('https://minotar.net', 10, './cache', 3600);

要更改使用的类或进行更好的调整,请使用类 PublicUHC\SkinCache\SkinFetcher

它需要一个下载器、一个格式化器、一个PoolInterface和一个ErrorImagePainter。它还需要一个'ttl',可以是null以永久存储,也可以是一个整数作为到期前的秒数,或者是一个DateTime对象,用于指定获取的皮肤应何时到期。

下载器

只有一个可用的下载器实现

PublicUHC\SkinCache\Downloaders\MinotarLikeDownloader

它以类似minotar的方式从提供的基URL获取内容。

皮肤从 <base_url>/skin/<username> 获取

头盔从 <base_url>/helm/<username>/<size>.png 获取

头部从 <base_url>/avatar/<username>/<size>.png 获取

它期望一个初始化用于获取数据的 GuzzleHttp\Client 对象。至少需要设置一个base_url。

$client = new GuzzleHttp\Client(['base_url' => 'https://minotar.net/']);

有关Client对象的更多信息,请访问 GitHub上的Guzzle项目

它还期望一个用于获取的秒数超时。

以下是从minotar.net获取并设置30秒超时的示例

$downloader = new MinotarLikeDownloader(new Client(['base_url' => 'https://minotar.net/']), 30);

格式化器

注意:只有原始图像被缓存,任何格式化都是应用于原始图像的

有3种可用的格式化器实现

PublicUHC\SkinCache\Formatters\HttpResponseFormatter

它以Symfony HttpResponse格式格式化图像,来自 Symfony Http Foundation项目

PublicUHC\SkinCache\Formatters\RawImageFormatter

以原始图像字符串形式返回图像

PublicUHC\SkinCache\Formatters\GreyscaleFormatter

以灰度版本返回图像

格式化器可以串联以进行多次格式化传递

$formatter = (new GreyscaleFormatter())->then(new HttpResponseFormatter());

这将首先将其转换为灰度,然后将其转换为Http Foundation响应。

PoolInterface

期望来自 Stash PHP项目 的PoolInterface。

示例 - 丢弃对象,无缓存

$pool = new Pool(new BlackHole());

示例 - 使用默认的Ephemeral驱动程序

$pool = new Pool();

错误图像绘制器

只有一个可用的错误图像绘制器实现

PublicUHC\SkinCache\Painters\TransparentImagePainter

对于错误图像,它将返回相同尺寸的透明图像

完整示例

以下示例使用MinotarLikeDownloader从官方minotar站点获取皮肤,以Http Foundation响应样式格式化它们,并使用默认的Ephemeral缓存驱动程序,然后获取'ghowden'账户的16x16头盔

$downloader = new MinotarLikeDownloader(new Client(['base_url'=>'https://minotar.net/']));
$fetcher = new SkinFetcher($downloader, new HttpResponseFormatter(), new Pool(), new TransparentImagePainter());

$fetcher->fetchHelm('ghowden', 16);