/** * 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; }