media_name = $media->name; $this->overwrite = $overwrite; } /** * Get the middleware the job should pass through. * * @return array */ public function middleware(): array { return [new WithoutOverlapping($this->media_name)]; } /** * Execute the job. */ public function handle(): void { $media = Media::find($this->media_name); if ($media === null) { return; } if(Storage::disk('media')->exists($media->hash) === false) { return; } $variantData = $media->getVariantTypes($matchingMimeType); if(count($variantData) === 0) { return; } $temp = $media->getAsTempFile(); if($temp === null) { return; } $tempDir = pathinfo($temp, PATHINFO_DIRNAME); $media->deleteAllVariants(); /* Images */ if($matchingMimeType === 'image/*') { $manager = new ImageManager(new Driver()); $image = $manager->read($temp); $isPortrait = $image->height() > $image->width(); foreach ($variantData as $variantName => $size) { $image = $manager->read($temp); if($isPortrait === true) { $width = $size['height']; $height = $size['width']; } else { $width = $size['width']; $height = $size['height']; } if($variantName !== 'scaled' && ($image->height() < $height || $image->width() < $width)) { continue; } $image->scaleDown($width, $height); $variantFile = $tempDir . '/' . $media->hash . '-' . $variantName . '.webp'; $image->save($variantFile, quality: 75); $media->addVariant($variantName, 'image/webp', 'webp', $variantFile); }//end foreach } } }