clone Nette\Image
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- R2D2
- Člen | 22
při klonování nyní dojde pouze ke zkopírování GD resource, tj. změny v klonu se pochopitelně projeví i v originále. Ne že by to byl nějaký zásadní problém, ale někdy by člověk očekával jiné chování – například když si vytvořím jednotné pozadí a do něj pak budu šoupat různé obrázky na překrytí, přijde mi hezčí klonovat, než vytvořit prázdný a kopírovat obsah ručně
návrh řešení je přidání metody:
<?php
/**
* Clones image resource (eg. create a new one and copy content)
*/
public function __clone()
{
$clonedResource = imagecreatetruecolor($this->getWidth(), $this->getHeight());
imagecopymerge($clonedResource, $this->getImageResource(), 0, 0, 0, 0, $this->getWidth(), $this->getHeight(), 100);
$this->setImageResource($clonedResource);
}
?>
- R2D2
- Člen | 22
koukám podle dokumentace to dokonce vypadá, že by to fungovat mělo ( zdroj https://doc.nette.org/cs/utils/images )
Během manipulace s obrázkem je možné kdykoliv udělat jeho kopii:
$dolly = clone $image;
taková kopie v současnosti moc smysl nedává, když obě instance pracují se stejným resourcem