/** * @return Image * @api */ public function save() { try { $pass = new DelegatingOptionPass(); $this->options = $pass->process($this->options); TranslatedException::init($this->options); TranslatedException::addResourceDir(__DIR__ . '/Resources/translations'); $pass = new DelegatingLayerPass(); $this->layers = $pass->process($this->layers); $engine = new DelegatingEngine(); $image = $engine->getImage($this->layers, $this->options); } catch (TranslatedException $e) { $image = new Image(); $image->setMessage($e->getMessage()); $image->setVerboseMessage($e->getVerboseMessage()); } $this->layers = [0 => null]; return $image; }