You are here

protected function Convert::execute in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/system/src/Plugin/ImageToolkit/Operation/gd/Convert.php \Drupal\system\Plugin\ImageToolkit\Operation\gd\Convert::execute()
  2. 9 core/modules/system/src/Plugin/ImageToolkit/Operation/gd/Convert.php \Drupal\system\Plugin\ImageToolkit\Operation\gd\Convert::execute()

Performs the actual manipulation on the image.

Image toolkit operation implementers must implement this method. This method is responsible for actually performing the operation on the image. When this method gets called, the implementer may assume all arguments, also the optional ones, to be available, validated and corrected.

Parameters

array $arguments: An associative array of arguments to be used by the toolkit operation.

Return value

bool TRUE if the operation was performed successfully, FALSE otherwise.

Overrides ImageToolkitOperationBase::execute

File

core/modules/system/src/Plugin/ImageToolkit/Operation/gd/Convert.php, line 42

Class

Convert
Defines GD2 convert operation.

Namespace

Drupal\system\Plugin\ImageToolkit\Operation\gd

Code

protected function execute(array $arguments) {

  // Create a new resource of the required dimensions and format, and copy
  // the original resource on it with resampling. Destroy the original
  // resource upon success.
  $width = $this
    ->getToolkit()
    ->getWidth();
  $height = $this
    ->getToolkit()
    ->getHeight();
  $original_resource = $this
    ->getToolkit()
    ->getResource();
  $original_type = $this
    ->getToolkit()
    ->getType();
  $data = [
    'width' => $width,
    'height' => $height,
    'extension' => $arguments['extension'],
    'transparent_color' => $this
      ->getToolkit()
      ->getTransparentColor(),
    'is_temp' => TRUE,
  ];
  if ($this
    ->getToolkit()
    ->apply('create_new', $data)) {
    if (imagecopyresampled($this
      ->getToolkit()
      ->getResource(), $original_resource, 0, 0, 0, 0, $width, $height, $width, $height)) {
      imagedestroy($original_resource);
      return TRUE;
    }

    // In case of error, reset resource and type to as it was.
    $this
      ->getToolkit()
      ->setResource($original_resource);
    $this
      ->getToolkit()
      ->setType($original_type);
  }
  return FALSE;
}