protected function resize(ImagineImageInterface $image, $mode = ImageInterface::RATIOMODE_INSET, $filter = ImagineImageInterface::FILTER_UNDEFINED)
{
if ($mode !== ImageInterface::RATIOMODE_INSET && $mode !== ImageInterface::RATIOMODE_OUTBOUND) {
throw new \InvalidArgumentException('Invalid mode specified');
}
$imageSize = $image->getSize();
$requestedDimensions = $this->calculateDimensions($imageSize);
$resizedImage = $image->copy();
$resizedImage->usePalette($image->palette());
$resizedImage->strip();
$resizeDimensions = $requestedDimensions;
if ($mode === ImageInterface::RATIOMODE_OUTBOUND) {
$resizeDimensions = $this->calculateOutboundScalingDimensions($imageSize, $requestedDimensions);
}
$resizedImage->resize($resizeDimensions, $filter);
if ($mode === ImageInterface::RATIOMODE_OUTBOUND) {
$resizedImage->crop(new Point(max(0, round(($resizeDimensions->getWidth() - $requestedDimensions->getWidth()) / 2)), max(0, round(($resizeDimensions->getHeight() - $requestedDimensions->getHeight()) / 2))), $requestedDimensions);
}
return $resizedImage;
}