public function getImageBackend()
    {
        // Re-use existing image backend if set
        if ($this->imageBackend) {
            return $this->imageBackend;
        }

        // Skip files we know won't be an image
        if (!$this->getIsImage() || !$this->getHash()) {
            return null;
        }

        // Pass to backend service factory
        try {
            return $this->imageBackend = Injector::inst()->createWithArgs(Image_Backend::class, array($this));
        } catch (InjectorNotFoundException $ex) {
            // Handle file-not-found errors
            return null;
        }
    }