/** * @param LayerInterface[] $layers * @param mixed[] $options */ protected function initContents(array $layers, $options) { foreach ($layers as $layer) { if ($layer instanceof ImageAwareLayerInterface) { $this->initImageAwareLayerResource($layer); } elseif ($layer instanceof TextLayerInterface) { $this->initTextLayerResource($layer); } if ($layer instanceof RegularLayerInterface) { $resource = $this->rh->getMergedGdResource($layers[0]->get('final.resource'), $layer->get('final.resource'), $layer->get('regular.move.x'), $layer->get('regular.move.y'), $layer->get('regular.move.gravity'), $layer->get('image.opacity')); imagedestroy($layer->get('final.resource')); $layers[0]->set('final.resource', $resource); } } $contents = $this->rh->getContentsFromGdResource($layers[0]->get('final.format'), $layers[0]->get('final.resource'), $options, true); imagedestroy($layers[0]->get('final.resource')); $layers[0]->set('final.contents', $contents); }
/** * @param BackgroundLayerInterface $layer */ protected function mergeFrameResource(BackgroundLayerInterface $layer) { if (!$layer->has('gif.cache_resource')) { return; } $resource = $layer->get('gif.frame_resource'); $cacheResource = $layer->get('gif.cache_resource'); $extracted = $layer->get('gif.extracted'); $resource = $this->rh->getMergedGdResource($resource, $cacheResource); if ($extracted->last()) { imagedestroy($cacheResource); } $layer->set('gif.frame_resource', $resource); }