@php use Cloudinary\Transformation\Effect; use Cloudinary\Transformation\Resize; use Cloudinary\Transformation\Rotate; use Cloudinary\Transformation\Argument\Color; use Cloudinary\Transformation\RoundCorners; use Cloudinary\Transformation\Border; use Cloudinary\Transformation\Gravity; use Cloudinary\Transformation\FocusOn; use Cloudinary\Transformation\Compass; use Cloudinary\Transformation\Reshape; use Cloudinary\Transformation\SimulateColorBlind; use Cloudinary\Transformation\Adjust; use Cloudinary\Transformation\ImproveMode; use Illuminate\Support\Str; $retrieveFormattedImage = cloudinary()->imageTag($publicId ?? ''); /** * SET ALT if provided */ if (isset($alt)) { $retrieveFormattedImage = cloudinary() ->imageTag($publicId ?? '') ->setAttributes([ 'alt' => $alt ?? $publicId, ]); } /** * SET CLASS if provided */ if (isset($class)) { $retrieveFormattedImage = cloudinary() ->imageTag($publicId ?? '') ->setAttributes([ 'class' => $class, ]); } /** * If the attribute is "crop" */ if (isset($crop)) { $cropOptions = [ 'thumb', 'crop', 'fill', 'limit', 'scale', 'fit', 'pad', 'lfill', 'lpad', 'mfit', 'mpad', 'scale', ]; if (in_array($crop, $cropOptions)) { $cropFactor = $crop; if ($crop == 'thumb') { $cropFactor = 'thumbnail'; } if ($crop == 'limit') { $cropFactor = 'limitFit'; } if ($crop == 'lfill') { $cropFactor = 'limitFill'; } if ($crop == 'lpad') { $cropFactor = 'limitPad'; } if ($crop == 'mfit') { $cropFactor = 'minimumFit'; } if ($crop == 'mpad') { $cropFactor = 'minimumPad'; } $retrieveFormattedImage = cloudinary() ->imageTag($publicId ?? '') ->resize( Resize::$cropFactor() ->width($width ?? '') ->height($height ?? ''), ); /** * If the attribute is "gravity" * * Gravity only be used with cropping, most especially thumb cropping * * A qualifier that determines which part of an asset to focus on, and thus which part of the asset to keep, when any part of the asset is * cropped. For overlays, this setting determines where to place the overlay. */ if (isset($gravity)) { /** * Check if the gravity attribute is a compass gravity */ if (Str::startsWith($gravity, 'compass:')) { $gravityBreakdown = explode(':', $gravity); $gravityConstant = Str::studly($gravityBreakdown[1]); $gravityImplementation = Resize::$cropFactor() ->width($width ?? '') ->height($height ?? '') ->gravity(Gravity::compass(Compass::$gravityConstant())); } else { /** * Check if its a face, faces or object gravity. e.g faces, face, microwave */ $gravityImplementation = Resize::$cropFactor() ->width($width ?? '') ->height($height ?? '') ->gravity(Gravity::focusOn(FocusOn::$gravity())); } $retrieveFormattedImage = cloudinary() ->imageTag($publicId ?? '') ->resize($gravityImplementation); } } } /** * If the attribute is "effect" */ if (isset($effect)) { if ($effect == 'cartoonify') { $retrieveFormattedImage->effect(Effect::cartoonify()); } if (str_contains($effect, 'cartoonify|')) { $cartoonification = explode('|', $effect); $cartoonQualifier = explode(':', $cartoonification[1]); $lineStrength = $cartoonQualifier[0]; $colorReductionLevel = $cartoonQualifier[1]; if ($colorReductionLevel == 'bw') { $retrieveFormattedImage->effect(Effect::cartoonify()->lineStrength($lineStrength)->blackwhite()); } $retrieveFormattedImage->effect( Effect::cartoonify()->lineStrength($lineStrength)->colorReductionLevel($colorReductionLevel), ); } if (str_contains($effect, 'art|')) { $artisticFilter = explode('|', $effect); $artQualifier = $artisticFilter[1]; $retrieveFormattedImage->effect(Effect::artisticFilter($artQualifier)); } } /** * If the attribute is "rotate" */ if (isset($rotate)) { $retrieveFormattedImage->rotate(Rotate::byAngle($rotate)); } /** * If the attribute is "colorize" */ if (isset($colorize)) { /** Example of values can be: - violet_50 - rgb:999_30 **/ if (gettype($colorize) == 'string') { $colorizeAttributes = explode('_', $colorize); $color = $colorizeAttributes[0]; $level = $colorizeAttributes[1]; /** * SET COLOR FORMAT depending on rgb format or normal color format */ if (Str::startsWith($color, 'rgb:')) { $colorBreakdown = explode(':', $color); $colorFormat = Color::rgb($colorBreakdown[1]); } else { $colorFormat = Color::$color(); } $retrieveFormattedImage->effect(Effect::colorize()->level($level)->color($colorFormat)); } } /** * If the attribute is "trim" */ if (isset($trim)) { /** Example of values can be: - 50 - 50_yellow **/ if (gettype($trim) == 'string') { $trimAttributes = explode('_', $trim); $colorSimilarity = $trimAttributes[0]; $colorOverride = $trimAttributes[1]; /** * SET COLOR FORMAT depending on rgb format or normal color format */ if (Str::startsWith($colorOverride, 'rgb:')) { $colorBreakdown = explode(':', $colorOverride); $colorFormat = Color::rgb($colorBreakdown[1]); } else { $colorFormat = Color::$colorOverride(); } $retrieveFormattedImage->reshape( Reshape::trim()->colorSimilarity($colorSimilarity)->colorOverride($colorFormat), ); } } /** * If the attribute is "blur" */ if (isset($blur)) { /** Example of values can be: - 20000 **/ $retrieveFormattedImage->effect(Effect::blur()->strength($blur)); } /** * If the attribute is "grayscale" */ if (isset($grayscale)) { $retrieveFormattedImage->effect(Effect::grayscale()); } /** * If the attribute is "blackwhite" */ if (isset($blackwhite)) { if (gettype($blackwhite) == 'string') { $threshold = $blackwhite; $retrieveFormattedImage->effect(Effect::blackwhite()->threshold($threshold)); } $retrieveFormattedImage->effect(Effect::blackwhite()); } /** * If the attribute is "sepia" */ if (isset($sepia)) { $retrieveFormattedImage->effect(Effect::sepia()->level($sepia)); } /** * If the attribute is "redeye" */ if (isset($redeye)) { $retrieveFormattedImage->effect(Effect::redEye()); } /** * If the attribute is "negate" */ if (isset($negate)) { $retrieveFormattedImage->effect(Effect::negate()); } /** * If the attribute is "oil-paint" */ if (isset($oilPaint)) { $retrieveFormattedImage->effect(Effect::oilPaint()->strength($oilPaint)); } /** * If the attribute is "vignette" */ if (isset($vignette)) { $retrieveFormattedImage->effect(Effect::vignette()->strength($vignette)); } /** * If the attribute is "simulate-colorblind" */ if (isset($simulateColorblind)) { if (gettype($simulateColorblind) == 'boolean') { $value = SimulateColorBlind::deuteranopia(); } else { $value = SimulateColorBlind::$simulateColorblind(); } $retrieveFormattedImage->effect(Effect::simulateColorblind()->condition($value)); } /** * If the attribute is "pixelate" */ if (isset($pixelate)) { $retrieveFormattedImage->effect(Effect::pixelate()->squareSize($pixelate)); } /** * If the attribute is "unsharp-mask" */ if (isset($unsharpMask)) { $retrieveFormattedImage->adjust(Adjust::unsharpMask()->strength($unsharpMask)); } /** * If the attribute is "saturation" */ if (isset($saturation)) { $retrieveFormattedImage->adjust(Adjust::saturation()->level($saturation)); } /** * If the attribute is "contrast" */ if (isset($contrast)) { $retrieveFormattedImage->adjust(Adjust::contrast()->level($contrast)); } /** * If the attribute is "brightness" */ if (isset($brightness)) { $retrieveFormattedImage->adjust(Adjust::brightness()->level($brightness)); } /** * If the attribute is "gamma" */ if (isset($gamma)) { $retrieveFormattedImage->adjust(Adjust::gamma()->level($gamma)); } /** * If the attribute is "improve-mode" */ if (isset($improveMode)) { /** Example of values can be 'indoor_99' * * Mode is 'indoor' or 'outdoor' * Blend is 99 */ if (gettype($improveMode) == 'string') { $improveAttributes = explode('_', $improveMode); $mode = $improveAttributes[0]; $blend = $improveAttributes[1]; $retrieveFormattedImage->adjust(Adjust::improve()->mode(ImproveMode::$mode())->blend($blend)); } } /** * If the attribute is "shadow" */ if (isset($shadow)) { /** Example of values can be: - rgb:999_-15_-15_50 - color_offsetX_offsetY_strength **/ if (gettype($shadow) == 'string') { $shadowAttributes = explode('_', $shadow); $color = $shadowAttributes[0]; $offsetX = $shadowAttributes[1]; $offsetY = $shadowAttributes[2]; $strength = $shadowAttributes[3]; /** * SET COLOR FORMAT depending on rgb format or normal color format */ if (Str::startsWith($color, 'rgb:')) { $colorBreakdown = explode(':', $color); $colorFormat = Color::rgb($colorBreakdown[1]); } else { $colorFormat = Color::$color(); } $retrieveFormattedImage->effect( Effect::shadow()->strength($strength)->color($colorFormat)->offsetX($offsetX)->offsetY($offsetY), ); } } /** * If the attribute is "border" */ if (isset($border)) { /** Example of values can be: - 40_solid_brown - 40_solid_rgb:999 **/ if (gettype($border) == 'string') { $borderAttributes = explode('_', $border); $width = $borderAttributes[0]; $style = $borderAttributes[1]; $color = $borderAttributes[2]; /** * SET COLOR FORMAT depending on rgb format or normal color format */ if (Str::startsWith($color, 'rgb:')) { $colorBreakdown = explode(':', $color); $colorFormat = Color::rgb($colorBreakdown[1]); } else { $colorFormat = Color::$color(); } $retrieveFormattedImage->border(Border::$style()->width($width)->color($colorFormat)); } } /** * If the attribute is "round-corners" */ if (isset($roundCorners)) { if (gettype($roundCorners) == 'boolean') { $retrieveFormattedImage->roundCorners(RoundCorners::max()); } } /** * If the attribute is "bg-color" a.k.a Background Color */ if (isset($bgColor)) { $retrieveFormattedImage->backgroundColor(Color::$bgColor()); } /** * If the attribute is "art" */ if (isset($art)) { $retrieveFormattedImage->effect(Effect::artisticFilter($art)); } /** * If the attribute is "cartoonify" */ if (isset($cartoonify)) { if (gettype($cartoonify) == 'boolean') { $retrieveFormattedImage->effect(Effect::cartoonify()); } if (gettype($cartoonify) == 'string') { $cartoonQualifier = explode(':', $cartoonify); $lineStrength = $cartoonQualifier[0]; $colorReductionLevel = $cartoonQualifier[1]; if ($colorReductionLevel == 'bw') { $retrieveFormattedImage->effect(Effect::cartoonify()->lineStrength($lineStrength)->blackwhite()); } else { $retrieveFormattedImage->effect( Effect::cartoonify()->lineStrength($lineStrength)->colorReductionLevel($colorReductionLevel), ); } } } echo $retrieveFormattedImage->serialize(); @endphp