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