diff --git a/lib/private/Preview/Generator.php b/lib/private/Preview/Generator.php index 4e4571f08570d..b9ea5ea1a07d1 100644 --- a/lib/private/Preview/Generator.php +++ b/lib/private/Preview/Generator.php @@ -651,6 +651,8 @@ private function getExtension($mimeType) { return 'png'; case 'image/jpeg': return 'jpg'; + case 'image/webp': + return 'webp'; case 'image/gif': return 'gif'; default: diff --git a/lib/private/Preview/Imaginary.php b/lib/private/Preview/Imaginary.php index da4864b1a22df..7184f7e9e76a3 100644 --- a/lib/private/Preview/Imaginary.php +++ b/lib/private/Preview/Imaginary.php @@ -106,6 +106,15 @@ public function getCroppedThumbnail(File $file, int $maxX, int $maxY, bool $crop $mimeType = 'jpeg'; } + $preview_format = $this->config->getSystemValueString('preview_format', 'jpeg'); + + switch ($preview_format) { // Change the format to the correct one + case 'webp': + $mimeType = 'webp'; + break; + default: + } + $operations = []; if ($convert) { @@ -121,7 +130,16 @@ public function getCroppedThumbnail(File $file, int $maxX, int $maxY, bool $crop ]; } - $quality = $this->config->getAppValue('preview', 'jpeg_quality', '80'); + switch ($mimeType) { + case 'jpeg': + $quality = $this->config->getAppValue('preview', 'jpeg_quality', '80'); + break; + case 'webp': + $quality = $this->config->getAppValue('preview', 'webp_quality', '80'); + break; + default: + $quality = $this->config->getAppValue('preview', 'jpeg_quality', '80'); + } $operations[] = [ 'operation' => ($crop ? 'smartcrop' : 'fit'),