code: def calculate_bounding_box_from_image(im, curr_page):
      
      xMax, y_max = im.size
      bounding_box = im.getbbox() # note this uses ltrb convention
      if not bounding_box:
          #print("\nWarning: could not calculate a bounding box for this page."
          #      "\nAn empty page is assumed.", file=sys.stderr)
          bounding_box = (xMax/2, y_max/2, xMax/2, y_max/2)
  
      bounding_box = list(bounding_box) # make temporarily mutable
  
      # Compensate for reversal of the image y convention versus PDF.
      bounding_box[1] = y_max - bounding_box[1]
      bounding_box[3] = y_max - bounding_box[3]
  
      full_page_box = curr_page.mediaBox # should have been set already to chosen box
  
      # Convert pixel units to PDF's bp units.
      convert_x = float(full_page_box.getUpperRight_x()
                       - full_page_box.getLowerLeft_x()) / xMax
      convert_y = float(full_page_box.getUpperRight_y()
                       - full_page_box.getLowerLeft_y()) / y_max
  
      # Get final box; note conversion to lower-left point, upper-right point format.
      final_box = [
          bounding_box[0] * convert_x,
          bounding_box[3] * convert_y,
          bounding_box[2] * convert_x,
          bounding_box[1] * convert_y]
  
      return final_box
docs: This function uses a PIL routine to get the bounding box of the rendered
      image.