WebCollage/src/Assembler/Simple.php

68 lines
1.7 KiB
PHP

<?php
namespace Shikiryu\WebGobbler\Assembler;
use Shikiryu\WebGobbler\Assembler;
class Simple extends Assembler
{
/**
* @param string $file
*/
public function saveTo($file)
{
try {
$image = $this->prepareImage();
$image->writeImage($file);
} catch (\ImagickException $e) {
echo $e->getMessage();
}
}
/**
* @param string $file
*/
public function display($file)
{
try {
$image = $this->prepareImage();
header('Content-type: image/jpeg');
echo $image;
} catch (\ImagickException $e) {
echo $e->getMessage();
}
}
/**
* @return \Imagick
* @throws \ImagickException
*/
private function prepareImage()
{
$file = $this->pool->getImage();
$this->files[] = $file;
$image = new \Imagick($file);
if ($image->getColorspace() !== \Imagick::COLORSPACE_RGB) {
$image->setColorspace(\Imagick::COLORSPACE_RGB);
}
$size = $image->getSize();
$imagex = $size['columns'];
$imagey = $size['rows'];
if ($imagex !== $this->config->get('assembler.sizex') || $imagey !== $this->config->get('assembler.sizey')) {
$image->thumbnailImage($this->config->get('assembler.sizex'), $this->config->get('assembler.sizey'));
}
if (true === $this->config->get('assembler.mirror')) {
$image->flopImage();
}
if (true === $this->config->get('assembler.emboss')) {
$image->embossImage(0, 1);
}
if (true === $this->config->get('assembler.invert')) {
$image->flipImage();
}
return $image;
}
}