/** * Saves the animated gif. * * @access public * @author Oliver Lillie * @param string $save_path * @param float $frame_delay The delay of each frame. * @return Image */ public function save($save_path, $frame_delay = 0.1) { parent::save($save_path, $frame_delay); // build the gif creator process $gc = new \GifCreator\GifCreator(); // add in all the frames $durations = array(); $frame_duration = $frame_delay * 100; foreach ($this->_frames as $path) { array_push($durations, $frame_duration); } $gc->create($this->_frames, $durations, $this->_loop_count === AnimatedGif::UNLIMITED_LOOPS ? '0' : $this->_loop_count + 1); $gif_data = $gc->getGif(); // check for errors or put the data into the file. if (empty($gif_data) === true || file_put_contents($save_path, $gif_data) === false) { throw new FfmpegProcessPostProcessException('AnimatedGif save using `php` "' . $save_path . '" failed.'); } return new Image($save_path, $this->_config); }
/** * Saves the animated gif. * * @access public * @author Oliver Lillie * @param string $save_path The path to save the animated gif to. * @return PHPVideoToolkit\Image Returns a new instance of PHPVideoToolkit\Image with the new animated gif as the src. * @throws PHPVideoToolkit\AnimatedGifException If an empty gif is generated. * @throws PHPVideoToolkit\AnimatedGifException If the gif couldn't be saved to the filesystem. */ public function save($save_path) { $save_path = parent::save($save_path); // build the gif creator process require_once dirname(dirname(dirname(__FILE__))) . '/vendor/sybio/gif-creator/src/GifCreator/GifCreator.php'; $gc = new \GifCreator\GifCreator(); // add in all the frames $durations = array(); $frame_duration = $this->_frame_delay * 100; foreach ($this->_frames as $path) { array_push($durations, $frame_duration); } $gc->create($this->_frames, $durations, $this->_loop_count === AnimatedGif::UNLIMITED_LOOPS ? '0' : $this->_loop_count + 1); $gif_data = $gc->getGif(); // check for errors or put the data into the file. if (empty($gif_data) === true) { throw new AnimatedGifException('AnimatedGif using `php` generated an empty gif.'); } if (file_put_contents($save_path, $gif_data) === false) { throw new AnimatedGifException('AnimatedGif save to filesystem failed using "' . $save_path . '".'); } return new Image($save_path, $this->_config); }