private function applyLetterbox(&$imageInstance, $transform)
    {
        if (isset($transform['width'], $transform['height'])) { // if both isn't set, there's no need for a letterbox
            /** @var ConfigModel $settings */
            $config = ImagerService::getConfig();

            $letterboxDef = $config->getSetting('letterbox', $transform);

            try {
                $size = new Box($transform['width'], $transform['height']);

                $position = new Point(
                    (int)floor(((int)$transform['width'] - $imageInstance->getSize()->getWidth()) / 2),
                    (int)floor(((int)$transform['height'] - $imageInstance->getSize()->getHeight()) / 2)
                );
            } catch (InvalidArgumentException $e) {
                Craft::error($e->getMessage(), __METHOD__);
                throw new ImagerException($e->getMessage(), $e->getCode(), $e);
            }

            $palette = new RGB();
            $color = $palette->color(
                $letterboxDef['color'] ?? '#000',
                isset($letterboxDef['opacity']) ? (int)($letterboxDef['opacity'] * 100) : 0
            );
            
            if ($this->imagineInstance !== null) {
                $backgroundImage = $this->imagineInstance->create($size, $color);
                $backgroundImage->paste($imageInstance, $position);
                $imageInstance = $backgroundImage;
            }
        }
    }
private function applyLetterbox(&$imageInstance, $transform)
    {
        if (isset($transform['width'], $transform['height'])) { // if both isn't set, there's no need for a letterbox
            /** @var ConfigModel $settings */
            $config = ImagerService::getConfig();

            $letterboxDef = $config->getSetting('letterbox', $transform);

            try {
                $size = new Box($transform['width'], $transform['height']);

                $position = new Point(
                    (int)floor(((int)$transform['width'] - $imageInstance->getSize()->getWidth()) / 2),
                    (int)floor(((int)$transform['height'] - $imageInstance->getSize()->getHeight()) / 2)
                );
            } catch (InvalidArgumentException $e) {
                Craft::error($e->getMessage(), __METHOD__);
                throw new ImagerException($e->getMessage(), $e->getCode(), $e);
            }

            $palette = new RGB();
            $color = $palette->color(
                $letterboxDef['color'] ?? '#000',
                isset($letterboxDef['opacity']) ? (int)($letterboxDef['opacity'] * 100) : 0
            );
            
            if ($this->imagineInstance !== null) {
                $backgroundImage = $this->imagineInstance->create($size, $color);
                $backgroundImage->paste($imageInstance, $position);
                $imageInstance = $backgroundImage;
            }
        }
    }
private function applyLetterbox ( & $ imageInstance , $ transform ) { if ( isset ( $ transform [ 'width' ] , $ transform [ 'height' ] ) ) { // if both isn't set, there's no need for a letterbox /** @var ConfigModel $settings */ $ config = ImagerService :: getConfig ( ) ; $ letterboxDef = $ config -> getSetting ( 'letterbox' , $ transform ) ; try { $ size = new Box ( $ transform [ 'width' ] , $ transform [ 'height' ] ) ; $ position = new Point ( ( int ) floor ( ( ( int ) $ transform [ 'width' ] - $ imageInstance -> getSize ( ) -> getWidth ( ) ) / 2 ) , ( int ) floor ( ( ( int ) $ transform [ 'height' ] - $ imageInstance -> getSize ( ) -> getHeight ( ) ) / 2 ) ) ; } catch ( InvalidArgumentException $ e ) { Craft :: error ( $ e -> getMessage ( ) , __METHOD__ ) ; throw new ImagerException ( $ e -> getMessage ( ) , $ e -> getCode ( ) , $ e ) ; } $ palette = new RGB ( ) ; $ color = $ palette -> color ( $ letterboxDef [ 'color' ] ?? '#000' , isset ( $ letterboxDef [ 'opacity' ] ) ? ( int ) ( $ letterboxDef [ 'opacity' ] * 100 ) : 0 ) ; if ( $ this -> imagineInstance !== null ) { $ backgroundImage = $ this -> imagineInstance -> create ( $ size , $ color ) ; $ backgroundImage -> paste ( $ imageInstance , $ position ) ; $ imageInstance = $ backgroundImage ; } } }
Apply letterbox to image

@param GdImage|ImagickImage|ImageInterface $imageInstance
@param array                               $transform

@throws ImagerException
Apply letterbox to image