コード例 #1
0
 /**
  * @param string $imageName
  * @return ImagePreview
  */
 private function extractPreviewData($imageName)
 {
     // example: name_500x300.png
     $regexp = '/(?<name>[^\\/]*?)(_(?<width>\\d+)x(?<height>\\d+))?(\\.(?<extension>[0-9a-z]+))$/i';
     preg_match($regexp, $imageName, $imageNameParts);
     $requiredKeys = ['name', 'width', 'height', 'extension'];
     foreach ($requiredKeys as $key) {
         if (!isset($imageNameParts[$key])) {
             throw new \InvalidArgumentException(sprintf("Info about '%' can't be extracted from image name '%s'", $key, $imageName));
         }
     }
     $sourcePath = $this->assetsResolver->assetUri(AssetFile::TYPE_IMAGE) . '/' . $imageNameParts['name'] . '.' . $imageNameParts['extension'];
     $imagePreviewData = new ImagePreview();
     $imagePreviewData->setSourceUri($sourcePath)->setTargetName($imageName)->setWidth($imageNameParts['width'])->setHeight($imageNameParts['height']);
     return $imagePreviewData;
 }