import json import base64 import random from PIL import Image, ImageEnhance from io import BytesIO import numpy as np import time def load_image_data(json_path='AgPixelGen.json'): with open(json_path, 'r') as f: return json.load(f) def decode_image_from_base64(base64_string): image_bytes = base64.b64decode(base64_string) image = Image.open(BytesIO(image_bytes)) return image def random_transform(image): random.seed(time.time()) transforms = ['color_change', 'noise'] random.shuffle(transforms) for transform_type in transforms: if transform_type == 'color_change': image = color_change(image) elif transform_type == 'noise': image = add_noise(image) return image def color_change(image): enhancer = ImageEnhance.Color(image) image = enhancer.enhance(random.uniform(0.2, 3.0)) enhancer = ImageEnhance.Brightness(image) image = enhancer.enhance(random.uniform(0.5, 2.0)) enhancer = ImageEnhance.Contrast(image) image = enhancer.enhance(random.uniform(0.5, 2.0)) return image def add_noise(image): width, height = image.size pixels = np.array(image) noise_factor = random.uniform(0.02, 0.1) noise = np.random.normal(scale=noise_factor, size=(height, width, 3)) noisy_pixels = pixels + noise * 255 noisy_pixels = np.clip(noisy_pixels, 0, 255).astype(np.uint8) return Image.fromarray(noisy_pixels) def decode_and_transform_image(image_data, key): image = decode_image_from_base64(image_data[key]) transformed_image = random_transform(image) return transformed_image def save_image(image, output_path='output.jpg'): image.save(output_path) def generate_image(user_prompt=""): image_data = load_image_data() if user_prompt: key = user_prompt.replace(' ', '+') else: matched_keys = [k for k in image_data.keys() if all(word.lower() in k.lower() for word in user_prompt.split())] if matched_keys: key = random.choice(matched_keys) else: key = None if not key or key not in image_data: matched_keys = [k for k in image_data.keys() if all(word.lower() in k.lower() for word in user_prompt.split())] if matched_keys: key = random.choice(matched_keys) else: return "" transformed_image = decode_and_transform_image(image_data, key) save_image(transformed_image) return "Image generated and saved." if __name__ == "__main__": user_prompt = input("Enter your prompt: ") result = generate_image(user_prompt) print(result)