def update_exif(filepath: str, data: dict):

    """

    Write the exif data to the image at filepath.

    """

    img_dims = cv2.imread(filepath).shape

 

    e = piexif.load(filepath)

    # e = {"0th": dict(), "GPS": dict(), "Exif": dict()}

    lat = dms(data["lat"], ("N", "S"))

    lon = dms(data["lon"], ("E", "W"))

    e["0th"][piexif.ImageIFD.ImageWidth] = img_dims[1]

    e["0th"][piexif.ImageIFD.ImageLength] = img_dims[0]

    e["GPS"][piexif.GPSIFD.GPSVersionID] = (2, 0, 0, 0)

    e["GPS"][piexif.GPSIFD.GPSLatitude] = lat[:3]

    e["GPS"][piexif.GPSIFD.GPSLatitudeRef] = lat[3]

    e["GPS"][piexif.GPSIFD.GPSLongitude] = lon[:3]

    e["GPS"][piexif.GPSIFD.GPSLongitudeRef] = lon[3]

    e["GPS"][piexif.GPSIFD.GPSAltitude] = rational(data["alt"], 100)

    e["GPS"][piexif.GPSIFD.GPSAltitudeRef] = 0

    e["Exif"][piexif.ExifIFD.FocalLength] = rational(data["focal"], 10)

    # e["Exif"][piexif.ExifIFD.FocalLengthIn35mmFilm] = focal_len_35mm(data["focal"], data["film"])

    exif_bytes = piexif.dump(e)

    piexif.insert(exif_bytes, filepath)