You are here

class SmartCrop in Image Effects 8.3

Same name in this branch
  1. 8.3 src/Plugin/ImageToolkit/Operation/gd/SmartCrop.php \Drupal\image_effects\Plugin\ImageToolkit\Operation\gd\SmartCrop
  2. 8.3 src/Plugin/ImageToolkit/Operation/imagemagick/SmartCrop.php \Drupal\image_effects\Plugin\ImageToolkit\Operation\imagemagick\SmartCrop
Same name and namespace in other branches
  1. 8 src/Plugin/ImageToolkit/Operation/gd/SmartCrop.php \Drupal\image_effects\Plugin\ImageToolkit\Operation\gd\SmartCrop
  2. 8.2 src/Plugin/ImageToolkit/Operation/gd/SmartCrop.php \Drupal\image_effects\Plugin\ImageToolkit\Operation\gd\SmartCrop

Defines GD2 Smart Crop operation.

Plugin annotation


@ImageToolkitOperation(
  id = "image_effects_gd_smart_crop",
  toolkit = "gd",
  operation = "smart_crop",
  label = @Translation("Smart Crop"),
  description = @Translation("Similar to Crop, but preserves the portion of the image with the most entropy.")
)

Hierarchy

Expanded class hierarchy of SmartCrop

File

src/Plugin/ImageToolkit/Operation/gd/SmartCrop.php, line 19

Namespace

Drupal\image_effects\Plugin\ImageToolkit\Operation\gd
View source
class SmartCrop extends GDImageToolkitOperationBase {
  use SmartCropTrait;
  use GDOperationTrait;

  /**
   * {@inheritdoc}
   */
  protected function execute(array $arguments) {
    switch ($arguments['algorithm']) {
      case 'entropy_slice':
        $rect = $this
          ->getEntropyCropBySlicing($this
          ->getToolkit()
          ->getResource(), $arguments['width'], $arguments['height']);
        break;
      case 'entropy_grid':
        $rect = $this
          ->getEntropyCropByGridding($this
          ->getToolkit()
          ->getResource(), $arguments['width'], $arguments['height'], $arguments['simulate'], $arguments['algorithm_params']['grid_width'], $arguments['algorithm_params']['grid_height'], $arguments['algorithm_params']['grid_rows'], $arguments['algorithm_params']['grid_cols'], $arguments['algorithm_params']['grid_sub_rows'], $arguments['algorithm_params']['grid_sub_cols']);
        break;
    }
    $points = $this
      ->getRectangleCorners($rect);

    // Crop the image using the coordinates found above. If simulating, draw
    // a marker on the image instead.
    if (!$arguments['simulate']) {
      return $this
        ->getToolkit()
        ->apply('crop', [
        'x' => $points[6],
        'y' => $points[7],
        'width' => $rect
          ->getWidth(),
        'height' => $rect
          ->getHeight(),
      ]);
    }
    else {
      $rect
        ->translate([
        -2,
        -2,
      ]);
      for ($i = -2; $i <= 2; $i++) {
        $this
          ->getToolkit()
          ->apply('draw_rectangle', [
          'rectangle' => $rect,
          'border_color' => $i !== 0 ? '#00FF00FF' : '#FF0000FF',
        ]);
        $rect
          ->translate([
          1,
          1,
        ]);
      }
      for ($i = 0; $i < 8; $i += 2) {
        $this
          ->getToolkit()
          ->apply('draw_ellipse', [
          'cx' => $points[$i],
          'cy' => $points[$i + 1],
          'width' => 6,
          'height' => 6,
          'color' => '#FF0000FF',
        ]);
      }
    }
    return TRUE;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
GDImageToolkitOperationBase::getToolkit protected function The correctly typed image toolkit for GD operations. Overrides ImageToolkitOperationBase::getToolkit
GDOperationTrait::allocateColorFromRgba protected function Allocates a GD color from an RGBA hexadecimal.
GDOperationTrait::filterOpacity protected function Change overall image transparency level.
GDOperationTrait::getAreaEntropy protected function Computes the entropy of the area of an image.
GDOperationTrait::getEntropyCropByGridding protected function Computes the entropy crop of an image, using recursive gridding.
GDOperationTrait::getEntropyCropBySlicing protected function Computes the entropy crop of an image, using slices.
GDOperationTrait::getRectangleCorners protected function Convert a rectangle to a sequence of point coordinates.
GDOperationTrait::hexToRgba protected function Convert a RGBA hex to its RGBA integer GD components.
GDOperationTrait::imageCopyGaussianBlurred protected function Gets a copy of the source with the Gaussian Blur algorithm applied.
GDOperationTrait::imageCopyMergeAlpha protected function Copy and merge part of an image, preserving alpha.
GDOperationTrait::imagettfbboxWrapper protected function Wrapper of imagettfbbox().
GDOperationTrait::imagettftextWrapper protected function Wrapper of imagettftext().
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 if required arguments are passed in and adds defaults for non passed in optional arguments.
ImageToolkitOperationBase::__construct public function Constructs an image toolkit operation plugin. Overrides PluginBase::__construct
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
SmartCrop::execute protected function Performs the actual manipulation on the image. Overrides ImageToolkitOperationBase::execute
SmartCropTrait::arguments protected function
SmartCropTrait::validateArguments protected function
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.