From 08c785ff4665351ff30f72c92cc06f5b9735dce8 Mon Sep 17 00:00:00 2001 From: Richard Steinmetz Date: Tue, 30 Jul 2024 08:59:46 +0200 Subject: [PATCH] fix: don't persist previews used during blurhash generation Signed-off-by: Richard Steinmetz --- .../Listener/GenerateBlurhashMetadata.php | 23 ++++--------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/lib/private/Blurhash/Listener/GenerateBlurhashMetadata.php b/lib/private/Blurhash/Listener/GenerateBlurhashMetadata.php index 61ace449453b5..bb5bc3cadb238 100644 --- a/lib/private/Blurhash/Listener/GenerateBlurhashMetadata.php +++ b/lib/private/Blurhash/Listener/GenerateBlurhashMetadata.php @@ -15,12 +15,10 @@ use OCP\EventDispatcher\IEventDispatcher; use OCP\EventDispatcher\IEventListener; use OCP\Files\GenericFileException; -use OCP\Files\NotFoundException; use OCP\Files\NotPermittedException; use OCP\FilesMetadata\AMetadataEvent; use OCP\FilesMetadata\Event\MetadataBackgroundEvent; use OCP\FilesMetadata\Event\MetadataLiveEvent; -use OCP\IPreview; use OCP\Lock\LockedException; /** @@ -34,11 +32,6 @@ class GenerateBlurhashMetadata implements IEventListener { private const COMPONENTS_X = 4; private const COMPONENTS_Y = 3; - public function __construct( - private IPreview $preview, - ) { - } - /** * @throws NotPermittedException * @throws GenericFileException @@ -67,20 +60,12 @@ public function handle(Event $event): void { return; } - $image = false; - try { - // using preview image to generate the blurhash - $preview = $this->preview->getPreview($file, 256, 256); - $image = @imagecreatefromstring($preview->getContent()); - } catch (NotFoundException $e) { - // https://github.com/nextcloud/server/blob/9d70fd3e64b60a316a03fb2b237891380c310c58/lib/private/legacy/OC_Image.php#L668 - // The preview system can fail on huge picture, in that case we use our own image resizer. - if (str_starts_with($file->getMimetype(), 'image/')) { - $image = $this->resizedImageFromFile($file); - } + if (!str_starts_with($file->getMimetype(), 'image/')) { + return; } - if ($image === false) { + $image = $this->resizedImageFromFile($file); + if (!$image) { return; }