setColorspace(\Imagick::COLORSPACE_RGB); $final_image->newImage($this->config->get('assembler.sizex'), $this->config->get('assembler.sizey'), 'none'); $final_image = $this->prepareImage($final_image); $final_image->writeImage($file); } catch (\ImagickException $e) { echo $e->getMessage(); } } /** * */ public function display() { try { $final_image = new \Imagick(); $final_image->setColorspace(\Imagick::COLORSPACE_RGB); $final_image->newImage($this->config->get('assembler.sizex'), $this->config->get('assembler.sizey'), 'none'); $final_image = $this->prepareImage($final_image); header('Content-type: image/jpeg'); echo $final_image; } catch (\ImagickException $e) { echo $e->getMessage(); } } /** * @param \Imagick $final_image * * @return \Imagick * @throws \ImagickException */ private function prepareImage(\Imagick $final_image) { $image_size_x = $this->config->get('assembler.sizex') / $this->config->get('assembler.nbx'); $image_size_y = $this->config->get('assembler.sizey') / $this->config->get('assembler.nby'); for ($y = 0; $y < $this->config->get('assembler.nby'); $y++) { for ($x = 0; $x < $this->config->get('assembler.nbx'); $x++) { $file = $this->pool->getImage(); $this->files[] = $file; $image = new \Imagick($file); if ($image->getColorspace() !== \Imagick::COLORSPACE_RGB) { $image->setColorspace(\Imagick::COLORSPACE_RGB); } $image->scaleImage($image_size_x, $image_size_y, true); $final_image->compositeImage($image, \Imagick::COMPOSITE_DEFAULT, $x * $image_size_x, $y * $image_size_y); } } if (true === $this->config->get('assembler.mirror')) { $final_image->flopImage(); } if (true === $this->config->get('assembler.emboss')) { $final_image->embossImage(0, 1); } if (true === $this->config->get('assembler.invert')) { $final_image->negateImage(false); } return $final_image; } }