Пример #1
0
 /**
  * {@inheritdoc}
  */
 public function resize(ImageInterface $image, ResizeConfigurationInterface $config, ResizeOptionsInterface $options)
 {
     if (!empty($GLOBALS['TL_HOOKS']['executeResize']) && is_array($GLOBALS['TL_HOOKS']['executeResize']) || !empty($GLOBALS['TL_HOOKS']['getImage']) && is_array($GLOBALS['TL_HOOKS']['getImage'])) {
         @trigger_error('Using the executeResize and getImage hooks has been deprecated and will no longer work in Contao 5.0. Replace the contao.image.resizer service instead.', E_USER_DEPRECATED);
         $this->legacyImage = null;
         $legacyPath = $image->getPath();
         if (0 === strpos($legacyPath, TL_ROOT . '/') || 0 === strpos($legacyPath, TL_ROOT . '\\')) {
             $legacyPath = substr($legacyPath, strlen(TL_ROOT) + 1);
             $this->legacyImage = new LegacyImage(new File($legacyPath));
             $this->legacyImage->setTargetWidth($config->getWidth());
             $this->legacyImage->setTargetHeight($config->getHeight());
             $this->legacyImage->setResizeMode($config->getMode());
             $this->legacyImage->setZoomLevel($config->getZoomLevel());
             if ($options->getTargetPath() && (0 === strpos($options->getTargetPath(), TL_ROOT . '/') || 0 === strpos($options->getTargetPath(), TL_ROOT . '\\'))) {
                 $this->legacyImage->setTargetPath(substr($options->getTargetPath(), strlen(TL_ROOT) + 1));
             }
             $importantPart = $image->getImportantPart();
             $this->legacyImage->setImportantPart(['x' => $importantPart->getPosition()->getX(), 'y' => $importantPart->getPosition()->getY(), 'width' => $importantPart->getSize()->getWidth(), 'height' => $importantPart->getSize()->getHeight()]);
         }
     }
     if (isset($GLOBALS['TL_HOOKS']['executeResize']) && is_array($GLOBALS['TL_HOOKS']['executeResize']) && $this->legacyImage) {
         foreach ($GLOBALS['TL_HOOKS']['executeResize'] as $callback) {
             $return = System::importStatic($callback[0])->{$callback[1]}($this->legacyImage);
             if (is_string($return)) {
                 return $this->createImage($image, TL_ROOT . '/' . $return);
             }
         }
     }
     return parent::resize($image, $config, $options);
 }
Пример #2
0
 /**
  * Creates a new image instance for the specified path.
  *
  * @param ImageInterface $image
  * @param string         $path
  *
  * @return ImageInterface
  *
  * @internal Do not call this method in your code; it will be made private in a future version
  */
 protected function createImage(ImageInterface $image, $path)
 {
     return new Image($path, $image->getImagine(), $this->filesystem);
 }
Пример #3
0
 /**
  * {@inheritdoc}
  */
 public function getImportantPartFromLegacyMode(ImageInterface $image, $mode)
 {
     if (1 !== substr_count($mode, '_')) {
         throw new \InvalidArgumentException(sprintf('"%s" is not a legacy resize mode', $mode));
     }
     $importantPart = [0, 0, $image->getDimensions()->getSize()->getWidth(), $image->getDimensions()->getSize()->getHeight()];
     list($modeX, $modeY) = explode('_', $mode);
     if ('left' === $modeX) {
         $importantPart[2] = 1;
     } elseif ('right' === $modeX) {
         $importantPart[0] = $importantPart[2] - 1;
         $importantPart[2] = 1;
     }
     if ('top' === $modeY) {
         $importantPart[3] = 1;
     } elseif ('bottom' === $modeY) {
         $importantPart[1] = $importantPart[3] - 1;
         $importantPart[3] = 1;
     }
     return new ImportantPart(new Point($importantPart[0], $importantPart[1]), new Box($importantPart[2], $importantPart[3]));
 }