Example #1
0
 /**
  * Resizes the image to dimensions found in props and crops if coords are provided
  *
  * @param array $props  Properties, including 'w', 'h', 'croppable'
  * @param array $coords Coordinates, include 'master_width', 'master_height', 'x1', 'y1' etc
  * @return Image
  */
 public function resize($props = array(), $coords = null)
 {
     $croppable = elgg_extract('croppable', $props, false);
     $width = elgg_extract('w', $props);
     $height = elgg_extract('h', $props);
     if (is_array($coords) && $croppable) {
         $master_width = elgg_extract('master_width', $coords, self::MASTER);
         $master_height = elgg_extract('master_height', $coords, self::MASTER);
         $x1 = elgg_extract('x1', $coords, 0);
         $y1 = elgg_extract('y1', $coords, 0);
         $x2 = elgg_extract('x2', $coords, self::MASTER);
         $y2 = elgg_extract('y2', $coords, self::MASTER);
         // scale to master size and then crop
         $this->source = $this->source->resize($master_width, $master_height, 'inside', 'down')->crop($x1, $y1, $x2 - $x1, $y2 - $y1);
     }
     if ($croppable) {
         // crop to icon width and height
         $this->source = $this->source->resize($width, $height, 'outside', 'any')->crop('center', 'center', $width, $height);
     } else {
         if (!is_array($coords)) {
             $this->source = $this->source->resize($width, $height, 'inside', 'down');
         }
     }
     return $this;
 }