更换Imagick的数据处理

更换获取的GD数据为二进制
This commit is contained in:
SANYE-YA 2025-08-07 05:23:18 +08:00 committed by GitHub
parent 33055ecbf9
commit de09deb356
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -62,22 +62,36 @@ class TextureController extends Controller
'preview-t'.$tid."-$format",
option('enable_preview_cache') ? $now->addYear() : $now->addMinute(),
function () use ($minecraft, $disk, $texture, $hash, $height, $usePNG) {
$file = $disk->get($hash);
$file = $disk->get($hash);
if ($texture->type === 'cape') {
$image = $minecraft->renderCape($file, $height);
$gdResource = $minecraft->renderCape($file, $height);
} else {
$image = $minecraft->renderSkin($file, 12, $texture->type === 'alex');
}
$gdResource = $minecraft->renderSkin($file, 12, $texture->type === 'alex');
}
ob_start();
imagepng($gdResource);
$imageBlob = ob_get_clean();
imagedestroy($gdResource);
$imagick = new \Imagick();
$imagick->readImageBlob($imageBlob);
$lastModified = $disk->lastModified($hash);
if (!$usePNG) {
$imagick->setImageFormat('webp');
}
// TODO: refactor
return \Intervention\Image\ImageManagerStatic::configure(['driver' => 'gd'])->make($image)
->response($usePNG ? 'png' : 'webp', 100)
->setLastModified(Carbon::createFromTimestamp($lastModified));
$response = response($imagick->getImageBlob(), 200, [
'Content-Type' => $usePNG ? 'image/png' : 'image/webp',
'Content-Length' => strlen($imagick->getImageBlob()),
]);
$response->setLastModified(Carbon::createFromTimestamp($disk->lastModified($hash)));
return $response;
}
);
return $response;
}