예제 #1
0
 /**
  * Adds any padding to the given image using the supplied padding config
  * 
  * @param $img
  * @param array $padding
  * @return $img
  */
 private function addPadding($img, $padding)
 {
     if (!$padding) {
         return $img;
     }
     if (isset($padding['percent']) && is_numeric($padding['percent'])) {
         $width = $img->getWidth() * (1 + $padding['percent'] / 100);
         $height = $img->getHeight() * (1 + $padding['percent'] / 100);
     } else {
         if (isset($padding['pixels']) && is_numeric($padding['pixels'])) {
             $width = $img->getWidth() + $padding['pixels'];
             $height = $img->getHeight() + $padding['pixels'];
         } else {
             return $img;
         }
     }
     $canvas = new sfImage();
     $canvas->fill(0, 0, isset($padding['color']) ? $padding['color'] : '#ffffff')->resize($width, $height)->overlay($img, 'center');
     return $canvas;
 }
 /**
  * Apply the transformation to the image and returns the image thumbnail
  */
 protected function transform(sfImage $image)
 {
     $resource_w = $image->getWidth();
     $resource_h = $image->getHeight();
     $scale_w = $this->getWidth() / $resource_w;
     $scale_h = $this->getHeight() / $resource_h;
     switch ($this->getMethod()) {
         case 'deflate':
         case 'inflate':
             return $image->resize($this->getWidth(), $this->getHeight());
         case 'left':
             $image->scale(max($scale_w, $scale_h));
             return $image->crop(0, (int) round(($image->getHeight() - $this->getHeight()) / 2), $this->getWidth(), $this->getHeight());
         case 'right':
             $image->scale(max($scale_w, $scale_h));
             return $image->crop($image->getWidth() - $this->getWidth(), (int) round(($image->getHeight() - $this->getHeight()) / 2), $this->getWidth(), $this->getHeight());
         case 'top':
             $image->scale(max($scale_w, $scale_h));
             return $image->crop((int) round(($image->getWidth() - $this->getWidth()) / 2), 0, $this->getWidth(), $this->getHeight());
         case 'bottom':
             $image->scale(max($scale_w, $scale_h));
             return $image->crop((int) round(($image->getWidth() - $this->getWidth()) / 2), $image->getHeight() - $this->getHeight(), $this->getWidth(), $this->getHeight());
         case 'center':
             $image->scale(max($scale_w, $scale_h));
             $left = (int) round(($image->getWidth() - $this->getWidth()) / 2);
             $top = (int) round(($image->getHeight() - $this->getHeight()) / 2);
             return $image->crop($left, $top, $this->getWidth(), $this->getHeight());
         case 'scale':
             return $image->scale(min($scale_w, $scale_h));
         case 'fit':
         default:
             $img = clone $image;
             $image->create($this->getWidth(), $this->getHeight());
             // Set a background color if specified
             if (!is_null($this->getBackground()) && $this->getBackground() != '') {
                 $image->fill(0, 0, $this->getBackground());
             }
             $img->scale(min($this->getWidth() / $img->getWidth(), $this->getHeight() / $img->getHeight()));
             $image->overlay($img, 'center');
             return $image;
     }
 }
 /**
  * Apply the transform to the sfImage object.
  *
  * @param sfImage
  * @return sfImage
  */
 protected function transform(sfImage $image)
 {
     $resource = $image->getAdapter()->getHolder();
     imagesetthickness($resource, $this->thickness);
     if (!is_null($this->fill)) {
         if (!is_object($this->fill)) {
             imagefilledellipse($resource, $this->x, $this->y, $this->width, $this->height, $image->getAdapter()->getColorByHex($resource, $this->fill));
         }
         if (is_object($this->fill)) {
             imagefilledellipse($resource, $this->x, $this->y, $this->width, $this->height, $image->getAdapter()->getColorByHex($resource, $this->color));
             $image->fill($this->x, $this->y, $this->fill);
         }
         if ($this->color !== "" && $this->fill !== $this->color) {
             imageellipse($resource, $this->x, $this->y, $this->width, $this->height, $image->getAdapter()->getColorByHex($resource, $this->color));
         }
     } else {
         imageellipse($resource, $this->x, $this->y, $this->width, $this->height, $image->getAdapter()->getColorByHex($resource, $this->color));
     }
     return $image;
 }
 /**
  * Apply the transform to the sfImage object.
  *
  * @param sfImage
  * @return sfImage
  */
 protected function transform(sfImage $image)
 {
     $resource = $image->getAdapter()->getHolder();
     if (!is_null($this->style)) {
         imagesetstyle($resource, $this->style);
     }
     imagesetthickness($resource, $this->thickness);
     if (!is_null($this->fill)) {
         if (!is_object($this->fill)) {
             imagefilledrectangle($resource, $this->x1, $this->y1, $this->x2, $this->y2, $image->getAdapter()->getColorByHex($resource, $this->fill));
         }
         if ($this->getColor() !== "" && $this->fill !== $this->getColor()) {
             imagerectangle($resource, $this->x1, $this->y1, $this->x2, $this->y2, $image->getAdapter()->getColorByHex($resource, $this->getColor()));
         }
         if (is_object($this->fill)) {
             $image->fill($this->x1 + $this->thickness, $this->y1 + $this->thickness, $this->fill);
         }
     } else {
         imagerectangle($resource, $this->x1, $this->y1, $this->x2, $this->y2, $image->getAdapter()->getColorByHex($resource, $this->getColor()));
     }
     return $image;
 }