diff --git a/config/glide-directive.php b/config/glide-directive.php index 92be4b4..c2902c7 100644 --- a/config/glide-directive.php +++ b/config/glide-directive.php @@ -8,20 +8,20 @@ // The default presets used for generating the resizes. // If the config in statamic.assets.image_manipulation.presets is empty this will be used instead. 'presets' => [ - 'placeholder' => ['w' => 32, 'h' => 32, 'q' => 100, 'fit' => 'crop_focal'], - 'xs' => ['w' => 320, 'h' => 320, 'q' => 100, 'fit' => 'crop_focal'], - 'sm' => ['w' => 480, 'h' => 480, 'q' => 100, 'fit' => 'crop_focal'], - 'md' => ['w' => 768, 'h' => 768, 'q' => 100, 'fit' => 'crop_focal'], - 'lg' => ['w' => 1280, 'h' => 1280, 'q' => 100, 'fit' => 'crop_focal'], - 'xl' => ['w' => 1440, 'h' => 1440, 'q' => 100, 'fit' => 'crop_focal'], - '2xl' => ['w' => 1680, 'h' => 1680, 'q' => 100, 'fit' => 'crop_focal'], + 'placeholder' => ['w' => 32, 'h' => 32, 'q' => 100, 'fit' => 'contain'], + 'xs' => ['w' => 320, 'h' => 320, 'q' => 100, 'fit' => 'contain'], + 'sm' => ['w' => 480, 'h' => 480, 'q' => 100, 'fit' => 'contain'], + 'md' => ['w' => 768, 'h' => 768, 'q' => 100, 'fit' => 'contain'], + 'lg' => ['w' => 1280, 'h' => 1280, 'q' => 100, 'fit' => 'contain'], + 'xl' => ['w' => 1440, 'h' => 1440, 'q' => 100, 'fit' => 'contain'], + '2xl' => ['w' => 1680, 'h' => 1680, 'q' => 100, 'fit' => 'contain'], - 'xs-h' => ['w' => 160, 'h' => 320, 'q' => 100, 'fit' => 'crop_focal'], - 'sm-h' => ['w' => 320, 'h' => 480, 'q' => 100, 'fit' => 'crop_focal'], - 'md-h' => ['w' => 480, 'h' => 768, 'q' => 100, 'fit' => 'crop_focal'], - 'lg-h' => ['w' => 768, 'h' => 1280, 'q' => 100, 'fit' => 'crop_focal'], - 'xl-h' => ['w' => 1280, 'h' => 1440, 'q' => 100, 'fit' => 'crop_focal'], - '2xl-h' => ['w' => 1440, 'h' => 1680, 'q' => 100, 'fit' => 'crop_focal'], + 'xs-h' => ['w' => 160, 'h' => 320, 'q' => 100, 'fit' => 'contain'], + 'sm-h' => ['w' => 320, 'h' => 480, 'q' => 100, 'fit' => 'contain'], + 'md-h' => ['w' => 480, 'h' => 768, 'q' => 100, 'fit' => 'contain'], + 'lg-h' => ['w' => 768, 'h' => 1280, 'q' => 100, 'fit' => 'contain'], + 'xl-h' => ['w' => 1280, 'h' => 1440, 'q' => 100, 'fit' => 'contain'], + '2xl-h' => ['w' => 1440, 'h' => 1680, 'q' => 100, 'fit' => 'contain'], ], // Configure which sources you would like to use. diff --git a/src/Responsive.php b/src/Responsive.php index ef6cde4..af28840 100644 --- a/src/Responsive.php +++ b/src/Responsive.php @@ -45,7 +45,8 @@ public static function getPresets(Asset $image): array } $configPresets = self::getPresetsByRatio($image, $config); - + $imageMeta = $image->meta(); + $fit = isset($imageMeta['data']['focus']) ? sprintf('crop-%s', $imageMeta['data']['focus']) : null; $index = 0; foreach ($configPresets as $preset => $data) { $size = $data['w'].'w'; @@ -53,23 +54,23 @@ public static function getPresets(Asset $image): array if ($index < (count($configPresets) - 1)) { $size .= ', '; } - + if (self::canUseWebpSource()) { - $glideUrl = Statamic::tag($preset === 'placeholder' ? 'glide:data_url' : 'glide')->params(['preset' => $preset, 'src' => $image->url(), 'format' => 'webp', 'fit' => $data['crop'] ?? 'crop_focal'])->fetch(); + $glideUrl = Statamic::tag($preset === 'placeholder' ? 'glide:data_url' : 'glide')->params(['preset' => $preset, 'src' => $image->url(), 'format' => 'webp', 'fit' => $fit ?? $data['fit']])->fetch(); if ($glideUrl) { $presets['webp'] .= $glideUrl.' '.$size; } } if (self::canUseMimeTypeSource()) { - $glideUrl = Statamic::tag($preset === 'placeholder' ? 'glide:data_url' : 'glide')->params(['preset' => $preset, 'src' => $image->url(), 'fit' => $data['crop'] ?? 'crop_focal'])->fetch(); + $glideUrl = Statamic::tag($preset === 'placeholder' ? 'glide:data_url' : 'glide')->params(['preset' => $preset, 'src' => $image->url(), 'fit' => $fit ?? $data['fit']])->fetch(); if ($glideUrl) { $presets[$image->mimeType()] .= $glideUrl.' '.$size; } } if ($preset === 'placeholder') { - $glideUrl = Statamic::tag('glide:data_url')->params(['preset' => 'placeholder', 'src' => $image->url(), 'fit' => $data['crop'] ?? 'crop_focal'])->fetch(); + $glideUrl = Statamic::tag('glide:data_url')->params(['preset' => 'placeholder', 'src' => $image->url(), 'fit' => $fit ?? $data['fit']])->fetch(); if ($glideUrl) { $presets['placeholder'] = $glideUrl; }