/**
  * Returns a resized image for provided source file
  *
  * If an appropriate resized version already exists it's reused.
  *
  * @param ResourceType $sourceFileResourceType
  * @param string       $sourceFilePath
  * @param string       $sourceFileName
  * @param int          $requestedWidth
  * @param int          $requestedHeight
  *
  * @return ResizedImage
  *
  * @throws \Exception
  */
 public function getResizedImage(ResourceType $sourceFileResourceType, $sourceFilePath, $sourceFileName, $requestedWidth, $requestedHeight)
 {
     $resizedImage = new ResizedImage($this, $sourceFileResourceType, $sourceFilePath, $sourceFileName, $requestedWidth, $requestedHeight);
     if (!$this->acl->isAllowed($sourceFileResourceType->getName(), $sourceFilePath, Permission::IMAGE_RESIZE_CUSTOM) && !$this->isSizeAllowedInConfig($requestedWidth, $requestedHeight)) {
         throw new UnauthorizedException('Provided size is not allowed in images.sizes configuration');
     }
     if (!$resizedImage->exists() && $resizedImage->requestedSizeIsValid()) {
         $resizedImage->create();
         $resizeImageEvent = new ResizeImageEvent($this->app, $resizedImage);
         $this->dispatcher->dispatch(CKFinderEvent::CREATE_RESIZED_IMAGE, $resizeImageEvent);
         if (!$resizeImageEvent->isPropagationStopped()) {
             $resizedImage = $resizeImageEvent->getResizedImage();
             $resizedImage->save();
         }
     }
     return $resizedImage;
 }