/** * @param BackgroundLayerInterface $layer */ protected function initFrameContents(BackgroundLayerInterface $layer) { $extracted = $layer->get('gif.extracted'); $quality = $layer->get('gif.quality'); $resource = $layer->get('gif.frame_resource'); $dm = $extracted->getDisposalMethod(); $lm = $extracted->getLinkedDisposalMethod(); if (!$quality) { $contents = $this->getGifContentsFromGdResource($resource); imagedestroy($resource); $layer->set('gif.frame_contents', $contents); return; } if (GifExtracted::DISPOSAL_METHOD_NONE === $lm) { $controlResource = $layer->get('gif.control_resource'); if (GifExtracted::DISPOSAL_METHOD_NONE === $dm && !$extracted->last()) { $clonedResource = $this->rh->getClonedGdResource($resource); $layer->set('gif.control_resource', $clonedResource); } $resource = $this->optimizer->getOptimizedGdResource($resource, $controlResource); if (GifExtracted::DISPOSAL_METHOD_PREVIOUS !== $dm) { imagedestroy($controlResource); } $contents = $this->getGifContentsFromGdResource($resource); imagedestroy($resource); } else { $contents = $this->getGifContentsFromGdResource($resource); if (GifExtracted::DISPOSAL_METHOD_NONE === $dm && !$extracted->last()) { $layer->set('gif.control_resource', $resource); } else { imagedestroy($resource); } } $layer->set('gif.frame_contents', $contents); }
/** * @param ImageAwareLayerInterface $layer */ protected function initImageAwareLayerResource(ImageAwareLayerInterface $layer) { $format = $layer->get('image.format'); if ($layer->has('image.imc_uri')) { $uri = $layer->get('image.imc_uri'); $resource = $this->rh->getGdResourceFromStream($format, $uri, true); } else { $contents = $layer->get('image.contents'); $resource = $this->rh->getGdResourceFromContents($format, $contents, true); } if ($layer->has('image.resize.width')) { $resource = $this->rh->getResizedGdResource($resource, $layer->get('image.resize.width'), $layer->get('image.resize.height'), $layer->get('image.resize.option'), true); } elseif ($layer instanceof BackgroundLayerInterface && $layer->get('image.format') === PhpGdContext::FORMAT_PNG) { $resource = $this->rh->getClonedGdResource($resource); } $layer->set('final.resource', $resource); }