#!/Users/nadineganz/anaconda3/bin/python

import argparse
from PIL import Image, ImageOps
import os

def combine_images_to_alpha_channel(rgb_image_path, alpha_image_path):
    # Open the RGB image (first image)
    rgb_image = Image.open(rgb_image_path).convert("RGB")

    # Open the image to use as the alpha channel (second image)
    alpha_image = Image.open(alpha_image_path).convert("RGB")

    # Invert the secondary image (alpha image) using ImageOps.invert
    inverted_alpha_image = ImageOps.invert(alpha_image.convert("RGB"))

    # Extract the red channel from the inverted alpha image to use as the alpha channel
    alpha_channel = inverted_alpha_image.getchannel('R')

    # Create a new image with RGBA (RGB + alpha)
    rgba_image = rgb_image.convert("RGBA")

    # Replace the alpha channel of the new image with the extracted alpha
    rgba_image.putalpha(alpha_channel)

    # Generate output file name: append "_A" to the first image file name (without extension)
    output_filename = os.path.splitext(rgb_image_path)[0] + "_A.png"
    
    # Save the final image with alpha channel as PNG
    rgba_image.save(output_filename, "PNG")

    print(f"Image saved as {output_filename}")

def main():
    # Set up argument parsing
    parser = argparse.ArgumentParser(description="Combine two images, using the second image's inverted red channel as alpha for the first image.")
    
    # Define the arguments
    parser.add_argument("rgb_image", help="Path to the first RGB image (input image)")
    parser.add_argument("alpha_image", help="Path to the second RGB image (used to extract alpha channel, inverted before use)")
    
    # Parse the arguments
    args = parser.parse_args()

    # Call the function to combine the images and create the output
    combine_images_to_alpha_channel(args.rgb_image, args.alpha_image)

if __name__ == "__main__":
    main()