Example #1
0
 /**
  * @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);
 }
Example #2
0
 /**
  * @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);
 }