Sulu\Bundle\MediaBundle\Media\ImageConverter\ImagineImageConverter::modifyAllLayers PHP Method

modifyAllLayers() private method

Applies a callback to every layer of an image and returns the resulting image.
private modifyAllLayers ( Imagine\Image\ImageInterface $image, callable $modifier ) : Imagine\Image\ImageInterface
$image Imagine\Image\ImageInterface
$modifier callable The callable to apply to all layers
return Imagine\Image\ImageInterface
    private function modifyAllLayers(ImageInterface $image, callable $modifier)
    {
        if (count($image->layers())) {
            $countLayer = 0;
            $image->layers()->coalesce();
            /** @var ImageInterface $temporaryImage */
            $temporaryImage = null;
            foreach ($image->layers() as $layer) {
                $countLayer += 1;
                $layer = call_user_func($modifier, $layer);
                if ($countLayer === 1) {
                    $temporaryImage = $layer;
                    // use first layer as main image
                } else {
                    $temporaryImage->layers()->add($layer);
                }
            }
            $image = $temporaryImage;
        } else {
            $image = call_user_func($modifier, $image);
        }
        return $image;
    }