class ScaleAndCrop in ImageMagick 8.3
Same name and namespace in other branches
- 8 src/Plugin/ImageToolkit/Operation/imagemagick/ScaleAndCrop.php \Drupal\imagemagick\Plugin\ImageToolkit\Operation\imagemagick\ScaleAndCrop
- 8.2 src/Plugin/ImageToolkit/Operation/imagemagick/ScaleAndCrop.php \Drupal\imagemagick\Plugin\ImageToolkit\Operation\imagemagick\ScaleAndCrop
Defines imagemagick Scale and crop operation.
Plugin annotation
@ImageToolkitOperation(
id = "imagemagick_scale_and_crop",
toolkit = "imagemagick",
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 DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\Core\ImageToolkit\ImageToolkitOperationBase implements ImageToolkitOperationInterface
- class \Drupal\imagemagick\Plugin\ImageToolkit\Operation\imagemagick\ImagemagickImageToolkitOperationBase
- class \Drupal\imagemagick\Plugin\ImageToolkit\Operation\imagemagick\ScaleAndCrop
- class \Drupal\imagemagick\Plugin\ImageToolkit\Operation\imagemagick\ImagemagickImageToolkitOperationBase
- class \Drupal\Core\ImageToolkit\ImageToolkitOperationBase implements ImageToolkitOperationInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of ScaleAndCrop
File
- src/
Plugin/ ImageToolkit/ Operation/ imagemagick/ ScaleAndCrop.php, line 16
Namespace
Drupal\imagemagick\Plugin\ImageToolkit\Operation\imagemagickView source
class ScaleAndCrop extends ImagemagickImageToolkitOperationBase {
/**
* {@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',
],
'filter' => [
'description' => 'An optional filter to apply for the resize',
'required' => FALSE,
'default' => '',
],
];
}
/**
* {@inheritdoc}
*/
protected function validateArguments(array $arguments) {
// Fail if no dimensions available for current image.
if (is_null($this
->getToolkit()
->getWidth()) || is_null($this
->getToolkit()
->getHeight())) {
throw new \RuntimeException("No image dimensions available for the image '{$this->getPluginDefinition()['operation']}' operation");
}
$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),
'filter' => $arguments['filter'],
];
// 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
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
ImagemagickImageToolkitOperationBase:: |
protected | function | Helper to add a command line argument. | |
ImagemagickImageToolkitOperationBase:: |
protected | function | Helper to escape a command line argument. | |
ImagemagickImageToolkitOperationBase:: |
protected | function |
Returns the image toolkit instance for this operation. Overrides ImageToolkitOperationBase:: |
|
ImageToolkitOperationBase:: |
protected | property | A logger instance. | |
ImageToolkitOperationBase:: |
protected | property | The image toolkit. | |
ImageToolkitOperationBase:: |
final public | function |
Applies a toolkit specific operation to an image. Overrides ImageToolkitOperationInterface:: |
|
ImageToolkitOperationBase:: |
protected | function | Checks if required arguments are passed in and adds defaults for non passed in optional arguments. | |
ImageToolkitOperationBase:: |
public | function |
Constructs an image toolkit operation plugin. Overrides PluginBase:: |
|
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
ScaleAndCrop:: |
protected | function |
Returns the definition of the operation arguments. Overrides ImageToolkitOperationBase:: |
|
ScaleAndCrop:: |
protected | function |
Performs the actual manipulation on the image. Overrides ImageToolkitOperationBase:: |
|
ScaleAndCrop:: |
protected | function |
Validates the arguments. Overrides ImageToolkitOperationBase:: |
|
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |