コード例 #1
0
ファイル: BasicRenderer.php プロジェクト: cyantree/mosaic
 public function render(Job $job)
 {
     $format = $this->configuration->getString('format', 'png');
     $defaultColor = $format == 'png' ? 0x0 : 0xffffffff;
     $backgroundColor = $this->configuration->getColor('background', $defaultColor);
     foreach ($job->spritesheets as $spritesheet) {
         /** @var Spritesheet $spritesheet */
         $image = ImageTools::createImage($spritesheet->width, $spritesheet->height, $backgroundColor);
         foreach ($spritesheet->sprites as $sprite) {
             $repeatY = $sprite->repeatY;
             while ($repeatY--) {
                 $repeatX = $sprite->repeatX;
                 while ($repeatX--) {
                     imagecopy($image, $sprite->image, $sprite->spriteX + $sprite->paddingLeft + $repeatX * $sprite->width, $sprite->spriteY + $sprite->paddingTop + $repeatY * $sprite->height, 0, 0, $sprite->width, $sprite->height);
                 }
             }
         }
         $output = $this->mosaic->getPath($this->configuration->getString('outputFolder', Configuration::VALUE_REQUIRED));
         $encodedSpritesheetPath = Tools::encodeFilePath($output . '/' . $spritesheet->name . '.' . $format);
         FileTools::createDirectory(dirname($encodedSpritesheetPath));
         if ($format == 'png') {
             imagepng($image, $encodedSpritesheetPath, 9, E_ALL);
         } elseif ($format == 'jpg') {
             imagejpeg($image, $encodedSpritesheetPath, $this->configuration->getInt('quality', 90));
         }
         imagedestroy($image);
         $encodedSpritesheetPath = realpath($encodedSpritesheetPath);
         if (!$encodedSpritesheetPath) {
             throw new \Exception('Could not verify rendered spritesheet path.');
         }
         // Normalize output path
         $spritesheet->path = Tools::decodeFilePath($encodedSpritesheetPath);
     }
 }
コード例 #2
0
ファイル: BackgroundHelper.php プロジェクト: cyantree/mosaic
 public function onSpritesLoaded(Event $event)
 {
     foreach ($this->job->sprites as $sprite) {
         if (!$sprite->enabled) {
             continue;
         }
         $configuration = $this->getSpriteConfiguration($sprite);
         if (!$configuration->getBool('enabled', true)) {
             continue;
         }
         $backgroundColor = $configuration->getColor('color');
         $padding = $configuration->getFourSide('padding', 0);
         if ($backgroundColor) {
             $newImage = ImageTools::createImage($sprite->width + $padding->left + $padding->right, $sprite->height + $padding->top + $padding->bottom, $backgroundColor);
             imagealphablending($newImage, true);
             imagecopy($newImage, $sprite->image, $padding->left, $padding->top, 0, 0, $sprite->width, $sprite->height);
             $sprite->replaceImage($newImage);
         }
     }
 }