Exemple #1
0
 /**
  * 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;
 }