/** * Executes the resize operation via Imagine. * * @param ImageInterface $image * @param ResizeCoordinatesInterface $coordinates * @param string $path * @param ResizeOptionsInterface $options * * @return ImageInterface * * @internal Do not call this method in your code; it will be made private in a future version */ protected function executeResize(ImageInterface $image, ResizeCoordinatesInterface $coordinates, $path, ResizeOptionsInterface $options) { if (!$this->filesystem->exists(dirname($path))) { $this->filesystem->mkdir(dirname($path)); } $imagineOptions = $options->getImagineOptions(); $imagineImage = $image->getImagine()->open($image->getPath())->resize($coordinates->getSize())->crop($coordinates->getCropStart(), $coordinates->getCropSize()); if (isset($imagineOptions['interlace'])) { try { $imagineImage->interlace($imagineOptions['interlace']); } catch (ImagineRuntimeException $e) { // Ignore failed interlacing } } $imagineImage->save($path, $imagineOptions); return $this->createImage($image, $path); }