docs: def resize_image_with_crop_or_pad(image, target_height, target_width,
                                    dynamic_shape=False):
    """Crops and/or pads an image to a target width and height.
  
    Resizes an image to a target width and height by either centrally
    cropping the image or padding it evenly with zeros.
  
    If `width` or `height` is greater than the specified `target_width` or
    `target_height` respectively, this op centrally crops along that dimension.
    If `width` or `height` is smaller than the specified `target_width` or
    `target_height` respectively, this op centrally pads with 0 along that
    dimension.
  
    Args:
      image: 3-D tensor of shape [height, width, channels]
      target_height: Target height.
      target_width: Target width.
      dynamic_shape: Whether the input image has undertermined shape. If set to
        `True`, shape information will be retrieved at run time. Default to
        `False`.
  
    Raises:
      ValueError: if `target_height` or `target_width` are zero or negative.
  
    Returns:
      Cropped and/or padded image of shape
      `[target_height, target_width, channels]`
    """
    image = ops.convert_to_tensor(image, name='image')
    _Check3DImage(image, require_static=(not dynamic_shape))
    original_height, original_width, _ =     _ImageDimensions(image, dynamic_shape=dynamic_shape)
  
    if target_width <= 0:
      raise ValueError('target_width must be > 0.')
    if target_height <= 0:
      raise ValueError('target_height must be > 0.')
  
    if dynamic_shape:
      max_ = math_ops.maximum
      min_ = math_ops.minimum
    else:
      max_ = max
      min_ = min
  
    width_diff = target_width - original_width
    offset_crop_width = max_(-width_diff // 2, 0)
    offset_pad_width = max_(width_diff // 2, 0)
  
    height_diff = target_height - original_height
    offset_crop_height = max_(-height_diff // 2, 0)
    offset_pad_height = max_(height_diff // 2, 0)
  
    # Maybe crop if needed.
    cropped = crop_to_bounding_box(image, offset_crop_height, offset_crop_width,
                                   min_(target_height, original_height),
                                   min_(target_width, original_width),
                                   dynamic_shape=dynamic_shape)
  
    # Maybe pad if needed.
    resized = pad_to_bounding_box(cropped, offset_pad_height, offset_pad_width,
                                  target_height, target_width,
                                  dynamic_shape=dynamic_shape)
  
    if resized.get_shape().ndims is None:
      raise ValueError('resized contains no shape.')
    if not resized.get_shape()[0].is_compatible_with(target_height):
      raise ValueError('resized height is not correct.')
    if not resized.get_shape()[1].is_compatible_with(target_width):
      raise ValueError('resized width is not correct.')
    return resized