Skip to content

Commit

Permalink
Merge pull request #40731 from nextcloud/imaginary-performance
Browse files Browse the repository at this point in the history
Generate all preview sizes for Imaginary
  • Loading branch information
enoch85 authored Oct 9, 2023
2 parents cad745b + 6e171bb commit 06efe9f
Showing 1 changed file with 0 additions and 36 deletions.
36 changes: 0 additions & 36 deletions lib/private/Preview/Generator.php
Original file line number Diff line number Diff line change
Expand Up @@ -139,23 +139,6 @@ public function generatePreviews(File $file, array $specifications, $mimeType =
$previewVersion = $file->getPreviewVersion() . '-';
}

// If imaginary is enabled, and we request a small thumbnail,
// let's not generate the max preview for performance reasons
if (count($specifications) === 1
&& ($specifications[0]['width'] <= 256 || $specifications[0]['height'] <= 256)
&& preg_match(Imaginary::supportedMimeTypes(), $mimeType)
&& $this->config->getSystemValueString('preview_imaginary_url', 'invalid') !== 'invalid') {
$crop = $specifications[0]['crop'] ?? false;
$preview = $this->getSmallImagePreview($previewFolder, $previewFiles, $file, $mimeType, $previewVersion, $crop);

if ($preview->getSize() === 0) {
$preview->delete();
throw new NotFoundException('Cached preview size 0, invalid!');
}

return $preview;
}

// Get the max preview and infer the max preview sizes from that
$maxPreview = $this->getMaxPreview($previewFolder, $previewFiles, $file, $mimeType, $previewVersion);
$maxPreviewImage = null; // only load the image when we need it
Expand Down Expand Up @@ -231,25 +214,6 @@ public function generatePreviews(File $file, array $specifications, $mimeType =
return $preview;
}

/**
* Generate a small image straight away without generating a max preview first
* Preview generated is 256x256
*
* @param ISimpleFile[] $previewFiles
*
* @throws NotFoundException
*/
private function getSmallImagePreview(ISimpleFolder $previewFolder, array $previewFiles, File $file, string $mimeType, string $prefix, bool $crop): ISimpleFile {
$width = 256;
$height = 256;

try {
return $this->getCachedPreview($previewFiles, $width, $height, $crop, $mimeType, $prefix);
} catch (NotFoundException $e) {
return $this->generateProviderPreview($previewFolder, $file, $width, $height, $crop, false, $mimeType, $prefix);
}
}

/**
* Acquire a semaphore of the specified id and concurrency, blocking if necessary.
* Return an identifier of the semaphore on success, which can be used to release it via
Expand Down

0 comments on commit 06efe9f

Please sign in to comment.