Browse Source
cache formats supported by imagick
cache formats supported by imagick
turns out this can be quite slow Signed-off-by: Robin Appelman <robin@icewind.nl>pull/36603/head
No known key found for this signature in database
GPG Key ID: 42B69D8A64526EFB
5 changed files with 53 additions and 7 deletions
-
1lib/composer/composer/autoload_classmap.php
-
1lib/composer/composer/autoload_static.php
-
40lib/private/Preview/IMagickSupport.php
-
14lib/private/PreviewManager.php
-
4lib/private/Server.php
@ -0,0 +1,40 @@ |
|||
<?php |
|||
|
|||
namespace OC\Preview; |
|||
|
|||
use OCP\ICache; |
|||
use OCP\ICacheFactory; |
|||
|
|||
class IMagickSupport { |
|||
private ICache $cache; |
|||
private ?\Imagick $imagick; |
|||
|
|||
public function __construct(ICacheFactory $cacheFactory) { |
|||
$this->cache = $cacheFactory->createLocal('imagick'); |
|||
|
|||
if (extension_loaded('imagick')) { |
|||
$this->imagick = new \Imagick(); |
|||
} else { |
|||
$this->imagick = null; |
|||
} |
|||
} |
|||
|
|||
public function hasExtension(): bool { |
|||
return !is_null($this->imagick); |
|||
} |
|||
|
|||
public function supportsFormat(string $format): bool { |
|||
if (is_null($this->imagick)) { |
|||
return false; |
|||
} |
|||
|
|||
$cached = $this->cache->get($format); |
|||
if (!is_null($cached)) { |
|||
return $cached; |
|||
} |
|||
|
|||
$formatSupported = count($this->imagick->queryFormats($format)) === 1; |
|||
$this->cache->set($format, $cached); |
|||
return $formatSupported; |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue