コード例 #1
0
ファイル: Image.php プロジェクト: codeforamerica/oakland-beta
 /**
  * Returns true if Imagick is installed and says that the image is transparent.
  *
  * @return bool
  */
 public function isTransparent()
 {
     if (craft()->images->isImagick() && method_exists("Imagick", "getImageAlphaChannel")) {
         return $this->_image->getImagick()->getImageAlphaChannel();
     }
     return false;
 }
コード例 #2
0
 /**
  * @param ImageInterface|\Imagine\Imagick\Image $image
  *
  * @return ImageInterface
  */
 public function apply(ImageInterface $image)
 {
     /** @var \Imagick $imagick */
     $imagick = $image->getImagick();
     $imagick->swirlImage((double) $this->getOption('degrees', 60));
     return $image;
 }
コード例 #3
0
 /**
  * @param ImageInterface|\Imagine\Imagick\Image $image
  *
  * @return ImageInterface
  */
 public function apply(ImageInterface $image)
 {
     /** @var \Imagick $imagick */
     $imagick = $image->getImagick();
     $imagick->reduceNoiseImage((double) $this->getOption('radius', 0));
     return $image;
 }
コード例 #4
0
ファイル: Image.php プロジェクト: kentonquatman/portfolio
 /**
  * Get save options.
  *
  * @param int|null $quality
  * @param string   $extension
  * @return array
  */
 private function _getSaveOptions($quality = null, $extension = null)
 {
     $quality = !$quality ? $this->_quality : $quality;
     $extension = !$extension ? $this->getExtension() : $extension;
     switch ($extension) {
         case 'jpeg':
         case 'jpg':
             return array('jpeg_quality' => $quality, 'flatten' => true);
         case 'gif':
             $options = array('animated' => $this->_isAnimatedGif);
             if ($this->_isAnimatedGif) {
                 // Imagine library does not provide this value and arbitrarily divides it by 10, when assigning,
                 // so we have to improvise a little
                 $options['animated.delay'] = $this->_image->getImagick()->getImageDelay() * 10;
             }
             return $options;
         case 'png':
             // Valid PNG quality settings are 0-9, so normalize since we're calculating based on 0-200.
             $percentage = $quality * 100 / 200;
             $normalizedQuality = round($percentage / 100 * 9);
             return array('png_compression_level' => $normalizedQuality, 'flatten' => false);
         default:
             return array();
     }
 }
コード例 #5
0
ファイル: Image.php プロジェクト: kant312/sop
 /**
  * Get save options.
  *
  * @param int|null $quality
  * @param string   $extension
  * @return array
  */
 private function _getSaveOptions($quality = null, $extension = null)
 {
     // Because it's possible for someone to set the quality to 0.
     $quality = $quality === null || $quality === false ? $this->_quality : $quality;
     $extension = !$extension ? $this->getExtension() : $extension;
     switch ($extension) {
         case 'jpeg':
         case 'jpg':
             return array('jpeg_quality' => $quality, 'flatten' => true);
         case 'gif':
             $options = array('animated' => $this->_isAnimatedGif);
             if ($this->_isAnimatedGif) {
                 // Imagine library does not provide this value and arbitrarily divides it by 10, when assigning,
                 // so we have to improvise a little
                 $options['animated.delay'] = $this->_image->getImagick()->getImageDelay() * 10;
             }
             return $options;
         case 'png':
             // Valid PNG quality settings are 0-9, so normalize and flip, because we're talking about compression
             // levels, not quality, like jpg and gif.
             $normalizedQuality = round($quality * 9 / 100);
             $normalizedQuality = 9 - $normalizedQuality;
             if ($normalizedQuality < 0) {
                 $normalizedQuality = 0;
             }
             if ($normalizedQuality > 9) {
                 $normalizedQuality = 9;
             }
             return array('png_compression_level' => $normalizedQuality, 'flatten' => false);
         default:
             return array();
     }
 }
コード例 #6
0
ファイル: Image.php プロジェクト: ericnormannn/m
 /**
  * Get save options.
  *
  * @param int|null $quality
  * @param string   $extension
  * @return array
  */
 private function _getSaveOptions($quality = null, $extension = null)
 {
     // Because it's possible for someone to set the quality to 0.
     $quality = $quality === null || $quality === false ? $this->_quality : $quality;
     $extension = !$extension ? $this->getExtension() : $extension;
     switch ($extension) {
         case 'jpeg':
         case 'jpg':
             return array('jpeg_quality' => $quality, 'flatten' => true);
         case 'gif':
             $options = array('animated' => $this->_isAnimatedGif);
             if ($this->_isAnimatedGif) {
                 // Imagine library does not provide this value and arbitrarily divides it by 10, when assigning,
                 // so we have to improvise a little
                 $options['animated.delay'] = $this->_image->getImagick()->getImageDelay() * 10;
             }
             return $options;
         case 'png':
             // Valid PNG quality settings are 0-9, so normalize and flip, because we're talking about compression
             // levels, not quality, like jpg and gif.
             $normalizedQuality = round($quality * 9 / 100);
             $normalizedQuality = 9 - $normalizedQuality;
             if ($normalizedQuality < 0) {
                 $normalizedQuality = 0;
             }
             if ($normalizedQuality > 9) {
                 $normalizedQuality = 9;
             }
             $options = array('png_compression_level' => $normalizedQuality, 'flatten' => false);
             $pngInfo = ImageHelper::getPngImageInfo($this->_imageSourcePath);
             // Even though a 2 channel PNG is valid (Grayscale with alpha channel), Imagick doesn't recognize it as
             // a valid format: http://www.imagemagick.org/script/formats.php
             // So 2 channel PNGs get converted to 4 channel.
             if (is_array($pngInfo) && isset($pngInfo['channels']) && $pngInfo['channels'] !== 2) {
                 $format = 'png' . 8 * $pngInfo['channels'];
             } else {
                 $format = 'png32';
             }
             $options['png_format'] = $format;
             return $options;
         default:
             return array();
     }
 }
コード例 #7
0
ファイル: ImageTest.php プロジェクト: im286er/ent
 protected function getImageResolution(ImageInterface $image)
 {
     return $image->getImagick()->getImageResolution();
 }