function Crop::execute

Same name in other branches
  1. 8.9.x core/modules/system/src/Plugin/ImageToolkit/Operation/gd/Crop.php \Drupal\system\Plugin\ImageToolkit\Operation\gd\Crop::execute()
  2. 10 core/modules/system/src/Plugin/ImageToolkit/Operation/gd/Crop.php \Drupal\system\Plugin\ImageToolkit\Operation\gd\Crop::execute()
  3. 11.x core/modules/system/src/Plugin/ImageToolkit/Operation/gd/Crop.php \Drupal\system\Plugin\ImageToolkit\Operation\gd\Crop::execute()

Overrides ImageToolkitOperationBase::execute

File

core/modules/system/src/Plugin/ImageToolkit/Operation/gd/Crop.php, line 75

Class

Crop
Defines GD2 Crop operation.

Namespace

Drupal\system\Plugin\ImageToolkit\Operation\gd

Code

protected function execute(array $arguments) {
    // Create a new resource of the required dimensions, and copy and resize
    // the original resource on it with resampling. Destroy the original
    // resource upon success.
    $original_resource = $this->getToolkit()
        ->getResource();
    $data = [
        'width' => $arguments['width'],
        'height' => $arguments['height'],
        'extension' => image_type_to_extension($this->getToolkit()
            ->getType(), FALSE),
        'transparent_color' => $this->getToolkit()
            ->getTransparentColor(),
        'is_temp' => TRUE,
    ];
    if ($this->getToolkit()
        ->apply('create_new', $data)) {
        if (imagecopyresampled($this->getToolkit()
            ->getResource(), $original_resource, 0, 0, $arguments['x'], $arguments['y'], $arguments['width'], $arguments['height'], $arguments['width'], $arguments['height'])) {
            imagedestroy($original_resource);
            return TRUE;
        }
        else {
            // In case of failure, destroy the temporary resource and restore
            // the original one.
            imagedestroy($this->getToolkit()
                ->getResource());
            $this->getToolkit()
                ->setResource($original_resource);
        }
    }
    return FALSE;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.