class ScaleAndCrop
Same name in other branches
- 8.9.x core/modules/system/src/Plugin/ImageToolkit/Operation/gd/ScaleAndCrop.php \Drupal\system\Plugin\ImageToolkit\Operation\gd\ScaleAndCrop
- 10 core/modules/system/src/Plugin/ImageToolkit/Operation/gd/ScaleAndCrop.php \Drupal\system\Plugin\ImageToolkit\Operation\gd\ScaleAndCrop
- 11.x core/modules/system/src/Plugin/ImageToolkit/Operation/gd/ScaleAndCrop.php \Drupal\system\Plugin\ImageToolkit\Operation\gd\ScaleAndCrop
Defines GD2 Scale and crop operation.
Plugin annotation
@ImageToolkitOperation(
id = "gd_scale_and_crop",
toolkit = "gd",
operation = "scale_and_crop",
label = @Translation("Scale and crop"),
description = @Translation("Scales an image to the exact width and height given. This plugin achieves the target aspect ratio by cropping the original image equally on both sides, or equally on the top and bottom. This function is useful to create uniform sized avatars from larger images.")
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements \Drupal\Component\Plugin\PluginInspectionInterface, \Drupal\Component\Plugin\DerivativeInspectionInterface
- class \Drupal\Core\Plugin\PluginBase extends \Drupal\Component\Plugin\PluginBase uses \Drupal\Core\StringTranslation\StringTranslationTrait, \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\Messenger\MessengerTrait
- class \Drupal\Core\ImageToolkit\ImageToolkitOperationBase extends \Drupal\Core\Plugin\PluginBase implements \Drupal\Core\ImageToolkit\ImageToolkitOperationInterface
- class \Drupal\system\Plugin\ImageToolkit\Operation\gd\GDImageToolkitOperationBase extends \Drupal\Core\ImageToolkit\ImageToolkitOperationBase
- class \Drupal\system\Plugin\ImageToolkit\Operation\gd\ScaleAndCrop extends \Drupal\system\Plugin\ImageToolkit\Operation\gd\GDImageToolkitOperationBase
- class \Drupal\system\Plugin\ImageToolkit\Operation\gd\GDImageToolkitOperationBase extends \Drupal\Core\ImageToolkit\ImageToolkitOperationBase
- class \Drupal\Core\ImageToolkit\ImageToolkitOperationBase extends \Drupal\Core\Plugin\PluginBase implements \Drupal\Core\ImageToolkit\ImageToolkitOperationInterface
- class \Drupal\Core\Plugin\PluginBase extends \Drupal\Component\Plugin\PluginBase uses \Drupal\Core\StringTranslation\StringTranslationTrait, \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\Messenger\MessengerTrait
Expanded class hierarchy of ScaleAndCrop
3 string references to 'ScaleAndCrop'
- ImageTest::testScaleAndCropFails in core/
tests/ Drupal/ Tests/ Core/ Image/ ImageTest.php - Tests \Drupal\Core\Image\Image::scaleAndCrop().
- ImageTest::testScaleAndCropHeight in core/
tests/ Drupal/ Tests/ Core/ Image/ ImageTest.php - Tests \Drupal\Core\Image\Image::scaleAndCrop().
- ImageTest::testScaleAndCropWidth in core/
tests/ Drupal/ Tests/ Core/ Image/ ImageTest.php - Tests \Drupal\Core\Image\Image::scaleAndCrop().
File
-
core/
modules/ system/ src/ Plugin/ ImageToolkit/ Operation/ gd/ ScaleAndCrop.php, line 16
Namespace
Drupal\system\Plugin\ImageToolkit\Operation\gdView source
class ScaleAndCrop extends GDImageToolkitOperationBase {
/**
* {@inheritdoc}
*/
protected function arguments() {
return [
'x' => [
'description' => 'The horizontal offset for the start of the crop, in pixels',
'required' => FALSE,
'default' => NULL,
],
'y' => [
'description' => 'The vertical offset for the start the crop, in pixels',
'required' => FALSE,
'default' => NULL,
],
'width' => [
'description' => 'The target width, in pixels',
],
'height' => [
'description' => 'The target height, in pixels',
],
];
}
/**
* {@inheritdoc}
*/
protected function validateArguments(array $arguments) {
$actualWidth = $this->getToolkit()
->getWidth();
$actualHeight = $this->getToolkit()
->getHeight();
$scaleFactor = max($arguments['width'] / $actualWidth, $arguments['height'] / $actualHeight);
$arguments['x'] = isset($arguments['x']) ? (int) round($arguments['x']) : (int) round(($actualWidth * $scaleFactor - $arguments['width']) / 2);
$arguments['y'] = isset($arguments['y']) ? (int) round($arguments['y']) : (int) round(($actualHeight * $scaleFactor - $arguments['height']) / 2);
$arguments['resize'] = [
'width' => (int) round($actualWidth * $scaleFactor),
'height' => (int) round($actualHeight * $scaleFactor),
];
// Fail when width or height are 0 or negative.
if ($arguments['width'] <= 0) {
throw new \InvalidArgumentException("Invalid width ('{$arguments['width']}') specified for the image 'scale_and_crop' operation");
}
if ($arguments['height'] <= 0) {
throw new \InvalidArgumentException("Invalid height ('{$arguments['height']}') specified for the image 'scale_and_crop' operation");
}
return $arguments;
}
/**
* {@inheritdoc}
*/
protected function execute(array $arguments = []) {
return $this->getToolkit()
->apply('resize', $arguments['resize']) && $this->getToolkit()
->apply('crop', $arguments);
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
---|---|---|---|---|---|
GDImageToolkitOperationBase::getToolkit | protected | function | The correctly typed image toolkit for GD operations. | Overrides ImageToolkitOperationBase::getToolkit | |
ImageToolkitOperationBase::$logger | protected | property | A logger instance. | ||
ImageToolkitOperationBase::$toolkit | protected | property | The image toolkit. | ||
ImageToolkitOperationBase::apply | final public | function | Applies a toolkit specific operation to an image. | Overrides ImageToolkitOperationInterface::apply | |
ImageToolkitOperationBase::prepareArguments | protected | function | Checks for required arguments and adds optional argument defaults. | ||
ImageToolkitOperationBase::__construct | public | function | Constructs an image toolkit operation plugin. | ||
PluginInspectionInterface::getPluginDefinition | public | function | Gets the definition of the plugin implementation. | 6 | |
PluginInspectionInterface::getPluginId | public | function | Gets the plugin_id of the plugin instance. | 2 | |
ScaleAndCrop::arguments | protected | function | Returns the definition of the operation arguments. | Overrides ImageToolkitOperationBase::arguments | |
ScaleAndCrop::execute | protected | function | Performs the actual manipulation on the image. | Overrides ImageToolkitOperationBase::execute | |
ScaleAndCrop::validateArguments | protected | function | Validates the arguments. | Overrides ImageToolkitOperationBase::validateArguments |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.