#!/usr/bin/env python3 import argparse from pathlib import Path from PIL import Image from pydardraw.colormaps.io import load_colormap_from_json from pydardraw.colormaps.canada_msc import CANADA_MSC_REF from pydardraw.colormaps.nws_us import NWS_REF from pydardraw.processing.convert import image_to_dbz, dbz_to_image def main(): ap = argparse.ArgumentParser(description="Recolor a radar image to a target dBZ colormap") ap.add_argument("input", type=Path, help="Input image (PNG)") ap.add_argument("output", type=Path, help="Output image (PNG)") ap.add_argument("--src-colormap", type=Path, help="JSON colormap for source (value, #RRGGBB)") ap.add_argument("--dst-colormap", type=Path, help="JSON colormap for destination (value, #RRGGBB)") ap.add_argument("--fractional", action="store_true", help="Estimate fractional dBZ (xx.xx) using LAB projection") args = ap.parse_args() src_map = load_colormap_from_json(args.src_colormap) if args.src_colormap else CANADA_MSC_REF dst_map = load_colormap_from_json(args.dst_colormap) if args.dst_colormap else NWS_REF img = Image.open(args.input).convert("RGBA") dbz, alpha = image_to_dbz(img, src_map, fractional=args.fractional) out = dbz_to_image(dbz, alpha, dst_map) out.save(args.output) print(f"Saved: {args.output}") if __name__ == "__main__": main()