publicuhc / skin-cache
本地提供Minecraft皮肤
Requires
- guzzlehttp/guzzle: ~4.0
- symfony/http-foundation: ~2.5
- tedivm/stash: ~0.11
Requires (Dev)
- lstrojny/phpunit-function-mocker: ~0.2
- phpunit/phpunit: 3.7.*
This package is not auto-updated.
Last update: 2024-09-24 02:49:18 UTC
README
缓存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);