add fallback for creating avatar and preview
This commit is contained in:
parent
9211e6fb33
commit
de44c0b785
|
|
@ -43,6 +43,7 @@ class TextureController extends Controller
|
|||
{
|
||||
$texture = Texture::findOrFail($tid);
|
||||
$hash = $texture->hash;
|
||||
$usePNG = $request->has('png') || !(imagetypes() & IMG_WEBP);
|
||||
|
||||
$disk = Storage::disk('textures');
|
||||
abort_if($disk->missing($hash), 404);
|
||||
|
|
@ -52,7 +53,7 @@ class TextureController extends Controller
|
|||
$response = Cache::remember(
|
||||
'preview-t'.$tid,
|
||||
option('enable_preview_cache') ? $now->addYear() : $now->addMinute(),
|
||||
function () use ($minecraft, $disk, $texture, $hash, $height) {
|
||||
function () use ($minecraft, $disk, $texture, $hash, $height, $usePNG) {
|
||||
$file = $disk->get($hash);
|
||||
if ($texture->type === 'cape') {
|
||||
$image = $minecraft->renderCape($file, $height);
|
||||
|
|
@ -63,7 +64,7 @@ class TextureController extends Controller
|
|||
$lastModified = $disk->lastModified($hash);
|
||||
|
||||
return Image::make($image)
|
||||
->response('webp', 100)
|
||||
->response($usePNG ? 'png' : 'webp', 100)
|
||||
->setLastModified(Carbon::createFromTimestamp($lastModified));
|
||||
}
|
||||
);
|
||||
|
|
@ -120,12 +121,13 @@ class TextureController extends Controller
|
|||
{
|
||||
$size = (int) $request->query('size', 100);
|
||||
$mode = $request->has('3d') ? '3d' : '2d';
|
||||
$usePNG = $request->has('png') || !(imagetypes() & IMG_WEBP);
|
||||
|
||||
$disk = Storage::disk('textures');
|
||||
if (is_null($texture) || $disk->missing($texture->hash)) {
|
||||
return Image::make(resource_path("misc/textures/avatar$mode.png"))
|
||||
->resize($size, $size)
|
||||
->response('webp', 100);
|
||||
->response($usePNG ? 'png' : 'webp', 100);
|
||||
}
|
||||
|
||||
$hash = $texture->hash;
|
||||
|
|
@ -133,7 +135,7 @@ class TextureController extends Controller
|
|||
$response = Cache::remember(
|
||||
'avatar-'.$mode.'-t'.$texture->tid.'-s'.$size,
|
||||
option('enable_avatar_cache') ? $now->addYear() : $now->addMinute(),
|
||||
function () use ($minecraft, $disk, $hash, $size, $mode) {
|
||||
function () use ($minecraft, $disk, $hash, $size, $mode, $usePNG) {
|
||||
$file = $disk->get($hash);
|
||||
if ($mode === '3d') {
|
||||
$image = $minecraft->render3dAvatar($file, 25);
|
||||
|
|
@ -145,7 +147,7 @@ class TextureController extends Controller
|
|||
|
||||
return Image::make($image)
|
||||
->resize($size, $size)
|
||||
->response('webp', 100)
|
||||
->response($usePNG ? 'png' : 'webp', 100)
|
||||
->setLastModified($lastModified);
|
||||
}
|
||||
);
|
||||
|
|
|
|||
|
|
@ -57,7 +57,11 @@ class TextureControllerTest extends TestCase
|
|||
$this->get('/preview/'.$skin->tid)->assertNotFound();
|
||||
|
||||
$disk->put($skin->hash, '');
|
||||
$this->get('/preview/'.$skin->tid)->assertHeader('Content-Type', 'image/webp');
|
||||
$this->get('/preview/'.$skin->tid)
|
||||
->assertHeader('Content-Type', 'image/webp');
|
||||
Cache::clear();
|
||||
$this->get('/preview/'.$skin->tid.'?png')
|
||||
->assertHeader('Content-Type', 'image/png');
|
||||
$this->assertTrue(Cache::has('preview-t'.$skin->tid));
|
||||
|
||||
$cape = factory(Texture::class)->states('cape')->create();
|
||||
|
|
@ -124,6 +128,11 @@ class TextureControllerTest extends TestCase
|
|||
$this->assertEquals(100, $image->width());
|
||||
$this->assertEquals(100, $image->height());
|
||||
|
||||
Cache::clear();
|
||||
$this->get('/avatar/player/'.$player->name.'?png=true')
|
||||
->assertSuccessful()
|
||||
->assertHeader('Content-Type', 'image/png');
|
||||
|
||||
$image = $this->get('/avatar/player/'.$player->name.'?size=50')->getContent();
|
||||
$image = Image::make($image);
|
||||
$this->assertEquals(50, $image->width());
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user