turns out this can be quite slow Signed-off-by: Robin Appelman <robin@icewind.nl>pull/36603/head
parent
6236235d23
commit
382432d4e1
@ -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; |
||||
} |
||||
} |
||||
Loading…
Reference in new issue