diff --git a/assets/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_harvested_bundle.png b/assets/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_harvested_bundle.png index 22671fb7c..a67877dcf 100644 Binary files a/assets/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_harvested_bundle.png and b/assets/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_harvested_bundle.png differ diff --git a/assets/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_seed_packet.png b/assets/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_seed_packet.png index f2c7adc8f..82b23fb91 100644 Binary files a/assets/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_seed_packet.png and b/assets/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_seed_packet.png differ diff --git a/assets/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage1_sprout.png b/assets/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage1_sprout.png index ec61e38af..21e9f0bfc 100644 Binary files a/assets/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage1_sprout.png and b/assets/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage1_sprout.png differ diff --git a/assets/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage2_young.png b/assets/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage2_young.png index 3d14bbd33..68d257763 100644 Binary files a/assets/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage2_young.png and b/assets/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage2_young.png differ diff --git a/assets/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage3_growing.png b/assets/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage3_growing.png index 401b68493..65b6159e4 100644 Binary files a/assets/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage3_growing.png and b/assets/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage3_growing.png differ diff --git a/assets/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage4_ready.png b/assets/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage4_ready.png index 1989cab82..cf1a86a1a 100644 Binary files a/assets/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage4_ready.png and b/assets/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage4_ready.png differ diff --git a/assets/PHASE_PACKS/0_DEMO/crops/potato/growth_stages/potato_stage1_sprout.png b/assets/PHASE_PACKS/0_DEMO/crops/potato/growth_stages/potato_stage1_sprout.png index cab50e030..d718a9377 100644 Binary files a/assets/PHASE_PACKS/0_DEMO/crops/potato/growth_stages/potato_stage1_sprout.png and b/assets/PHASE_PACKS/0_DEMO/crops/potato/growth_stages/potato_stage1_sprout.png differ diff --git a/assets/PHASE_PACKS/0_DEMO/crops/potato/growth_stages/potato_stage2_young.png b/assets/PHASE_PACKS/0_DEMO/crops/potato/growth_stages/potato_stage2_young.png index 78de02e54..8d4ddbb26 100644 Binary files a/assets/PHASE_PACKS/0_DEMO/crops/potato/growth_stages/potato_stage2_young.png and b/assets/PHASE_PACKS/0_DEMO/crops/potato/growth_stages/potato_stage2_young.png differ diff --git a/assets/PHASE_PACKS/0_DEMO/crops/potato/growth_stages/potato_stage4_ready.png b/assets/PHASE_PACKS/0_DEMO/crops/potato/growth_stages/potato_stage4_ready.png index 7abc71d4a..8505cd031 100644 Binary files a/assets/PHASE_PACKS/0_DEMO/crops/potato/growth_stages/potato_stage4_ready.png and b/assets/PHASE_PACKS/0_DEMO/crops/potato/growth_stages/potato_stage4_ready.png differ diff --git a/assets/PHASE_PACKS/0_DEMO/crops/potato/master_reference.png b/assets/PHASE_PACKS/0_DEMO/crops/potato/master_reference.png index 6b88e6f1b..41f4c5ea5 100644 Binary files a/assets/PHASE_PACKS/0_DEMO/crops/potato/master_reference.png and b/assets/PHASE_PACKS/0_DEMO/crops/potato/master_reference.png differ diff --git a/assets/PHASE_PACKS/0_DEMO/tools/wood/hoe.png b/assets/PHASE_PACKS/0_DEMO/tools/wood/hoe.png index 936f9f00e..32517d692 100644 Binary files a/assets/PHASE_PACKS/0_DEMO/tools/wood/hoe.png and b/assets/PHASE_PACKS/0_DEMO/tools/wood/hoe.png differ diff --git a/assets/PHASE_PACKS/0_DEMO/tools/wood/scythe.png b/assets/PHASE_PACKS/0_DEMO/tools/wood/scythe.png index b44e6accf..f117f371a 100644 Binary files a/assets/PHASE_PACKS/0_DEMO/tools/wood/scythe.png and b/assets/PHASE_PACKS/0_DEMO/tools/wood/scythe.png differ diff --git a/assets/PHASE_PACKS/0_DEMO/tools/wood/shovel.png b/assets/PHASE_PACKS/0_DEMO/tools/wood/shovel.png index cb20f8780..85203ae07 100644 Binary files a/assets/PHASE_PACKS/0_DEMO/tools/wood/shovel.png and b/assets/PHASE_PACKS/0_DEMO/tools/wood/shovel.png differ diff --git a/assets/PHASE_PACKS/0_DEMO/tools/wood/watering_can.png b/assets/PHASE_PACKS/0_DEMO/tools/wood/watering_can.png index 4e5c84bd9..05dd08659 100644 Binary files a/assets/PHASE_PACKS/0_DEMO/tools/wood/watering_can.png and b/assets/PHASE_PACKS/0_DEMO/tools/wood/watering_can.png differ diff --git a/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_harvested_bundle.png b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_harvested_bundle.png new file mode 100644 index 000000000..22671fb7c Binary files /dev/null and b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_harvested_bundle.png differ diff --git a/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_seed_packet.png b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_seed_packet.png new file mode 100644 index 000000000..f2c7adc8f Binary files /dev/null and b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_seed_packet.png differ diff --git a/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage1_sprout.png b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage1_sprout.png new file mode 100644 index 000000000..ec61e38af Binary files /dev/null and b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage1_sprout.png differ diff --git a/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage2_young.png b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage2_young.png new file mode 100644 index 000000000..3d14bbd33 Binary files /dev/null and b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage2_young.png differ diff --git a/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage3_growing.png b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage3_growing.png new file mode 100644 index 000000000..401b68493 Binary files /dev/null and b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage3_growing.png differ diff --git a/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage4_ready.png b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage4_ready.png new file mode 100644 index 000000000..1989cab82 Binary files /dev/null and b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/cannabis/growth_stages/cannabis_stage4_ready.png differ diff --git a/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/potato/growth_stages/potato_stage1_sprout.png b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/potato/growth_stages/potato_stage1_sprout.png new file mode 100644 index 000000000..cab50e030 Binary files /dev/null and b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/potato/growth_stages/potato_stage1_sprout.png differ diff --git a/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/potato/growth_stages/potato_stage2_young.png b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/potato/growth_stages/potato_stage2_young.png new file mode 100644 index 000000000..78de02e54 Binary files /dev/null and b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/potato/growth_stages/potato_stage2_young.png differ diff --git a/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/potato/growth_stages/potato_stage3_growing.png b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/potato/growth_stages/potato_stage3_growing.png new file mode 100644 index 000000000..ab744e756 Binary files /dev/null and b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/potato/growth_stages/potato_stage3_growing.png differ diff --git a/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/potato/growth_stages/potato_stage4_ready.png b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/potato/growth_stages/potato_stage4_ready.png new file mode 100644 index 000000000..7abc71d4a Binary files /dev/null and b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/potato/growth_stages/potato_stage4_ready.png differ diff --git a/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/potato/master_reference.png b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/potato/master_reference.png new file mode 100644 index 000000000..6b88e6f1b Binary files /dev/null and b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/crops/potato/master_reference.png differ diff --git a/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/tools/wood/hoe.png b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/tools/wood/hoe.png new file mode 100644 index 000000000..936f9f00e Binary files /dev/null and b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/tools/wood/hoe.png differ diff --git a/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/tools/wood/scythe.png b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/tools/wood/scythe.png new file mode 100644 index 000000000..b44e6accf Binary files /dev/null and b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/tools/wood/scythe.png differ diff --git a/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/tools/wood/shovel.png b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/tools/wood/shovel.png new file mode 100644 index 000000000..cb20f8780 Binary files /dev/null and b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/tools/wood/shovel.png differ diff --git a/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/tools/wood/watering_can.png b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/tools/wood/watering_can.png new file mode 100644 index 000000000..4e5c84bd9 Binary files /dev/null and b/assets/_backup_before_greenscreen/PHASE_PACKS/0_DEMO/tools/wood/watering_can.png differ diff --git a/scripts/batch_green_screen_all.py b/scripts/batch_green_screen_all.py new file mode 100644 index 000000000..63f5aab85 --- /dev/null +++ b/scripts/batch_green_screen_all.py @@ -0,0 +1,132 @@ +#!/usr/bin/env python3 +""" +🟢 BATCH GREEN SCREEN GENERATOR +Converts ALL images to have #00FF00 chroma key background +Uses rembg AI for clean subject detection + +Usage: python3 scripts/batch_green_screen_all.py +""" + +import os +import sys +from pathlib import Path +from rembg import remove +from PIL import Image +from datetime import datetime +import shutil + +# Directories to process +DIRECTORIES = [ + "assets/PHASE_PACKS/0_DEMO", + "assets/PHASE_PACKS/1_FAZA_1", + "assets/PHASE_PACKS/2_FAZA_2", + "assets/sprites", + "assets/characters", + "assets/crops", +] + +CHROMA_GREEN = (0, 255, 0, 255) # #00FF00 +BACKUP_DIR = "assets/_backup_before_greenscreen" + +def process_image(input_path, create_backup=True): + """ + Process single image: + 1. Create backup of original + 2. Use AI to remove background + 3. Add green #00FF00 background + 4. Overwrite original with green version + """ + try: + # Open image + img = Image.open(input_path) + + # Create backup if requested + if create_backup: + backup_path = input_path.replace("assets/", f"{BACKUP_DIR}/") + os.makedirs(os.path.dirname(backup_path), exist_ok=True) + shutil.copy(input_path, backup_path) + + # Step 1: AI remove background + img_no_bg = remove(img) + + # Step 2: Create green background + green_bg = Image.new('RGBA', img_no_bg.size, CHROMA_GREEN) + + # Step 3: Composite subject onto green + green_bg.paste(img_no_bg, (0, 0), img_no_bg) + + # Step 4: Convert to RGB and save (overwrite original) + green_rgb = green_bg.convert('RGB') + green_rgb.save(input_path, 'PNG') + + return True, "OK" + + except Exception as e: + return False, str(e) + +def process_directory(directory): + """Process all PNG images in a directory""" + dir_path = Path(directory) + if not dir_path.exists(): + print(f" āš ļø Directory not found: {directory}") + return 0, 0 + + # Find all PNG files + all_images = list(dir_path.rglob("*.png")) + list(dir_path.rglob("*.PNG")) + + # Filter out backups and already processed + all_images = [p for p in all_images if '_backup' not in str(p) and '_GREEN' not in str(p)] + + total = len(all_images) + success = 0 + + print(f"\nšŸ“ {directory}") + print(f" Found {total} PNG images") + + for i, img_path in enumerate(all_images): + name = img_path.name + result, msg = process_image(str(img_path)) + + if result: + success += 1 + print(f" 🟢 [{i+1}/{total}] {name}") + else: + print(f" āŒ [{i+1}/{total}] {name} - {msg}") + + return success, total + +def main(): + print("=" * 60) + print("🟢 BATCH GREEN SCREEN GENERATOR") + print("=" * 60) + print(f"\nā° Started: {datetime.now().strftime('%H:%M:%S')}") + print(f"šŸŽÆ Target: Convert all images to #00FF00 green background") + print(f"šŸ’¾ Backups: Saved to {BACKUP_DIR}/") + print("\nāš ļø This will OVERWRITE original files!") + print(" Backups are created automatically.\n") + + # Create backup directory + os.makedirs(BACKUP_DIR, exist_ok=True) + + total_success = 0 + total_files = 0 + + for directory in DIRECTORIES: + success, total = process_directory(directory) + total_success += success + total_files += total + + print("\n" + "=" * 60) + print(f"āœ… COMPLETED!") + print(f" Processed: {total_success}/{total_files} images") + print(f" Failed: {total_files - total_success}") + print(f" Backups: {BACKUP_DIR}/") + print(f" Time: {datetime.now().strftime('%H:%M:%S')}") + print("=" * 60) + + # Instructions for reverting + print("\nšŸ“‹ To REVERT to originals:") + print(f" cp -r {BACKUP_DIR}/* assets/") + +if __name__ == '__main__': + main()