74 lines
2.2 KiB
Python
74 lines
2.2 KiB
Python
# gpt
|
|
|
|
import os
|
|
from PIL import Image, ImageOps, ImageEnhance
|
|
|
|
def combine_images(images):
|
|
"""Combine multiple Image objects horizontally."""
|
|
widths, heights = zip(*(i.size for i in images))
|
|
|
|
total_width = sum(widths)
|
|
max_height = max(heights)
|
|
|
|
new_im = Image.new('RGB', (total_width, max_height))
|
|
|
|
x_offset = 0
|
|
for im in images:
|
|
new_im.paste(im, (x_offset, 0))
|
|
x_offset += im.size[0]
|
|
|
|
return new_im
|
|
|
|
def find_image_path(base_path, file_name):
|
|
"""Find the image path, checking for both PNG and JPEG extensions."""
|
|
for ext in ['.png', '.jpg', '.jpeg']:
|
|
path = os.path.join(base_path, file_name + ext)
|
|
if os.path.exists(path):
|
|
return path
|
|
return None
|
|
|
|
def process_and_colorize_image(image_path, red, green, blue):
|
|
"""Process and colorize the image."""
|
|
image = Image.open(image_path).convert("L") # Convert to grayscale
|
|
|
|
# Colorize the image
|
|
colormap = ImageOps.colorize(image, black=(0, 0, 0), white=(red, green, blue))
|
|
|
|
# Enhance brightness
|
|
enhancer = ImageEnhance.Brightness(colormap)
|
|
colormap = enhancer.enhance(1.5)
|
|
|
|
return colormap
|
|
|
|
def process_file(file_path, images_directory):
|
|
images_by_row = {}
|
|
|
|
with open(file_path, 'r') as file:
|
|
for line in file:
|
|
parts = line.split()
|
|
if len(parts) < 6:
|
|
continue
|
|
|
|
file_name, x, y, red, green, blue = parts[0], int(parts[1]), int(parts[2]), int(parts[3]), int(parts[4]), int(parts[5])
|
|
image_path = find_image_path(images_directory, file_name)
|
|
|
|
if image_path is None:
|
|
print(f"Image not found: {file_name}")
|
|
continue
|
|
|
|
processed_image = process_and_colorize_image(image_path, red, green, blue)
|
|
|
|
if y not in images_by_row:
|
|
images_by_row[y] = []
|
|
|
|
images_by_row[y].append(processed_image)
|
|
|
|
for y, images in images_by_row.items():
|
|
combined_image = combine_images(images)
|
|
output_filename = f"image_row_{y}.png"
|
|
combined_image.save("../rows/" + output_filename)
|
|
print(f"Saved {output_filename}")
|
|
|
|
# Replace 'your_file.txt' with the path to your text file
|
|
process_file('../image.txt', '../original')
|