Source of file WebpGenerator.php
Size: 1,490 Bytes - Last Modified: 2021-12-24T07:11:38+00:00
/var/www/docs.ssmods.com/process/src/src/WebpGenerator.php
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | <?php declare(strict_types=1); namespace TheWebmen\WebpImages; use SilverStripe\Core\Injector\Injectable; final class WebpGenerator { use Injectable; private static bool $enabled = true; private static int $quality = 80; public function generate(string $url, string $mimeType): string { if (!$this->getEnabled()) { return $url; } if (!in_array($mimeType, ['image/png', 'image/jpeg', 'image/jpg'], true)) { return $url; } if (!empty($_SERVER['HTTP_ACCEPT']) && strpos($_SERVER['HTTP_ACCEPT'], 'image/webp') === false) { return $url; } $originalFilename = PUBLIC_PATH . $url; $url = $url . '.webp'; $filename = PUBLIC_PATH . $url; if (file_exists($filename)) { return $url; } switch ($mimeType) { case 'image/png': $image = imagecreatefrompng($originalFilename); imagesavealpha($image, true); break; case 'image/jpeg': case 'image/jpg': $image = imagecreatefromjpeg($originalFilename); break; } imagewebp($image, $filename, self::$quality); imagedestroy($image); return $url; } public function setEnabled(bool $enabled): void { self::$enabled = $enabled; } public function getEnabled(): bool { return self::$enabled; } } |