/**
* {@inheritdoc}
*/
public function convert(FileVersion $fileVersion, $formatKey)
{
$content = $this->storage->loadAsString($fileVersion->getName(), $fileVersion->getVersion(), $fileVersion->getStorageOptions());
$extractedImage = $this->mediaImageExtractor->extract($content);
try {
$image = $this->imagine->load($extractedImage);
} catch (RuntimeException $e) {
throw new InvalidFileTypeException($e->getMessage());
}
$image = $this->toRGB($image);
$format = $this->getFormat($formatKey);
$cropParameters = $this->getCropParameters($image, $fileVersion->getFormatOptions()->get($formatKey), $this->formats[$formatKey]);
if (isset($cropParameters)) {
$image = $this->applyFormatCrop($image, $cropParameters);
}
if (isset($format['scale']) && $format['scale']['mode'] !== ImageInterface::THUMBNAIL_INSET) {
$image = $this->applyFocus($image, $fileVersion, $format['scale']);
}
if (isset($format['scale'])) {
$image = $this->applyScale($image, $format['scale']);
}
if (isset($format['transformations'])) {
$image = $this->applyTransformations($image, $format['transformations']);
}
$image->strip();
// Set Interlacing to plane for smaller image size.
if (count($image->layers()) == 1) {
$image->interlace(ImageInterface::INTERLACE_PLANE);
}
$imagineOptions = $format['options'];
$imageExtension = $this->getImageExtension($fileVersion->getName());
return $image->get($imageExtension, $this->getOptionsFromImage($image, $imageExtension, $imagineOptions));
}