From 6a76dacdaeb6f57513cf6277f76346a59feb4efa Mon Sep 17 00:00:00 2001 From: James Collins Date: Sat, 4 May 2024 14:42:23 +1000 Subject: [PATCH] fix overlapping pages on PDF thumbnail generation --- app/Http/Controllers/MediaController.php | 7 +++++++ app/Jobs/Media/GenerateVariants.php | 7 ++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/MediaController.php b/app/Http/Controllers/MediaController.php index ac71fe2..98ddc77 100644 --- a/app/Http/Controllers/MediaController.php +++ b/app/Http/Controllers/MediaController.php @@ -233,6 +233,13 @@ class MediaController extends Controller if(!$exists) { $media->generateVariants(false); + } else { + // find media with the same hash that also has variants and copy them + $mediaWithVariants = Media::where('hash', $hash)->where('variants', '!=', '')->orderBy('created_at')->first(); + if($mediaWithVariants) { + $media->variants = $mediaWithVariants->variants; + $media->save(); + } } unlink($file->getRealPath()); diff --git a/app/Jobs/Media/GenerateVariants.php b/app/Jobs/Media/GenerateVariants.php index 181f9f6..4c13068 100644 --- a/app/Jobs/Media/GenerateVariants.php +++ b/app/Jobs/Media/GenerateVariants.php @@ -158,7 +158,12 @@ class GenerateVariants implements ShouldQueue $height = $variantData['thumbnail']['height']; $manager = new ImageManager(new Driver()); - $image = $manager->read($temp); + + $imagick = new \Imagick(); + $imagick->readImage($temp . '[0]'); // Read the first page of the PDF + $imagick->setImageFormat('png'); + + $image = $manager->read($imagick); $image->scaleDown($width, $height); $variantFile = $tempDir . '/' . $media->hash . '-thumbnail.webp';