Exemple #1
0
 /**
  * {@inheritdoc}
  */
 public function create(BoxInterface $size, ColorInterface $color = null)
 {
     $width = $size->getWidth();
     $height = $size->getHeight();
     $palette = null !== $color ? $color->getPalette() : new RGB();
     $color = null !== $color ? $color : $palette->color('fff');
     try {
         $gmagick = new \Gmagick();
         // Gmagick does not support creation of CMYK GmagickPixel
         // see https://bugs.php.net/bug.php?id=64466
         if ($color instanceof CMYKColor) {
             $switchPalette = $palette;
             $palette = new RGB();
             $pixel = new \GmagickPixel($palette->color((string) $color));
         } else {
             $switchPalette = null;
             $pixel = new \GmagickPixel((string) $color);
         }
         if ($color->getPalette()->supportsAlpha() && $color->getAlpha() < 100) {
             throw new NotSupportedException('alpha transparency is not supported');
         }
         $gmagick->newimage($width, $height, $pixel->getcolor(false));
         $gmagick->setimagecolorspace(\Gmagick::COLORSPACE_TRANSPARENT);
         $gmagick->setimagebackgroundcolor($pixel);
         $image = new Image($gmagick, $palette, new MetadataBag());
         if ($switchPalette) {
             $image->usePalette($switchPalette);
         }
         return $image;
     } catch (\GmagickException $e) {
         throw new RuntimeException('Could not create empty image', $e->getCode(), $e);
     }
 }
Exemple #2
0
 /**
  * 创建一个纯色图片
  * @param $width
  * @param $height
  * @param $color
  * @param $alpha  (透明度 0-100) 0为透明
  * @return object
  */
 public function create($width, $height, $color = '#ffffff', $alpha = 100)
 {
     if (!empty($color) && is_string($color)) {
         $palette = new RGB();
         $color = $palette->color(ltrim($color, '#'), $alpha);
     }
     return $this->imagine->create(new Box($width, $height), $color);
 }
Exemple #3
0
 /**
  * {@inheritdoc}
  */
 public function grayscale()
 {
     $gray = min(255, round(0.299 * $this->getRed() + 0.114 * $this->getBlue() + 0.587 * $this->getGreen()));
     return $this->palette->color(array($gray, $gray, $gray), $this->alpha);
 }