/** * Resize image and save to target file * * @param null|int|string $width NULL: original width; integer: width in pixel; string: others specific (50%) * @param null|int|string $height NULL: calculating by ratio; integer: height in pixel; string: others specific (50%) * @param null|int $quality * @return \Imager\ImageInfo * @throws \Imager\InvalidArgumentException * @throws \Imager\InvalidStateException */ public function resize($width = null, $height = null, $quality = null) { // if $width and $height dot defined, than set $width to zero (generate origin size) $helpWidth = !isset($width) && !isset($height) ? 0 : $width; $this->checkDimension($helpWidth, 'width'); $this->checkDimension($height, 'height'); $this->checkQuality($quality); $generateWith = $helpWidth === 0 ? $this->image->getWidth() . '!' : $width; $generateHeight = $height === 0 ? $this->image->getHeight() . '!' : $height; $generateQuality = $quality ?: 0; $source = $this->image->getPathname(); $options = $this->getCommandOptions($generateWith, $generateHeight, $generateQuality); $target = $this->createTempFile(); $command = sprintf('convert %s %s %s', $source, $options, $target); $this->run($command); $img = new ImageInfo($target, $this->image); $img->setParameter('id', $this->image->getFilename())->setParameter('width', $width)->setParameter('height', $height)->setParameter('quality', $quality); return $img; }
/** * Moves image to target * * @param \Imager\ImageInfo $image * @param string $target * @return \Imager\ImageInfo */ private function moveImage(ImageInfo $image, $target) { FileSystem::rename($image->getPathname(), $target); chmod($target, 0666); return new ImageInfo($target); }