public function crop($w, $h, $x, $y)
	{
		if ( $this->test() ){
			$args = \func_get_args();
			foreach ( $args as $arg ){
				if ( !is_numeric($arg) ){
					$this->error = \defined('BBN_ARGUMENTS_MUST_BE_NUMERIC') ?
						BBN_ARGUMENTS_MUST_BE_NUMERIC : 'Arguments must be numeric';
				}
			}
			if ( $w + $x > $this->w ){
				return false;
			}
			if ( $h + $y > $this->h ){
				return false;
			}
			if ( class_exists('\\Imagick') ){
				if ( !$this->img->cropImage($w,$h,$x,$y) ){
					$this->error = \defined('BBN_THERE_HAS_BEEN_A_PROBLEM') ?
						BBN_THERE_HAS_BEEN_A_PROBLEM : 'There has been a problem';
				}
			}
			else
			{
				$img = imagecreatetruecolor($w,$h);
        if ( $this->ext == 'png' || $this->ext == 'gif' || $this->ext == 'svg' ){
          imageColorAllocateAlpha($img, 0, 0, 0, 127);
          imagealphablending($img, false);
          imagesavealpha($img, true);
        }
				if ( imagecopyresampled($img,$this->img,0,0,$x,$y,$w,$h,$w,$h) ){
					$this->img = $img;
				}
				else{
					$this->error = \defined('BBN_THERE_HAS_BEEN_A_PROBLEM') ?
						BBN_THERE_HAS_BEEN_A_PROBLEM : 'There has been a problem';
				}
			}
		}
		return $this;
	}