code: def crop_img(image, rtol=1e-8, copy=True):
      
  
      img              = check_img(image)
      data             = img.get_data()
      infinity_norm    = max(-data.min(), data.max())
      passes_threshold = np.logical_or(data < -rtol * infinity_norm,
                                       data >  rtol * infinity_norm)
  
      if data.ndim == 4:
          passes_threshold = np.any(passes_threshold, axis=-1)
  
      coords = np.array(np.where(passes_threshold))
      start  = coords.min(axis=1)
      end    = coords.max(axis=1) + 1
  
      # pad with one voxel to avoid resampling problems
      start = np.maximum(start - 1, 0)
      end   = np.minimum(end   + 1, data.shape[:3])
  
      slices = [slice(s, e) for s, e in zip(start, end)]
  
      return _crop_img_to(img, slices, copy=copy)
docs: Crops img as much as possible
  
      Will crop img, removing as many zero entries as possible
      without touching non-zero entries. Will leave one voxel of
      zero padding around the obtained non-zero area in order to
      avoid sampling issues later on.
  
      Parameters
      ----------
      image: img-like object or str
          Can either be:
          - a file path to a Nifti image
          - any object with get_data() and get_affine() methods, e.g., nibabel.Nifti1Image.
          If niimg is a string, consider it as a path to Nifti image and
          call nibabel.load on it. If it is an object, check if get_data()
          and get_affine() methods are present, raise TypeError otherwise.
  
          Image to be cropped.
  
      rtol: float
          relative tolerance (with respect to maximal absolute
          value of the image), under which values are considered
          negligeable and thus croppable.
  
      copy: boolean
          Specifies whether cropped data is copied or not.
  
      Returns
      -------
      cropped_img: image
          Cropped version of the input image