AgPixelGen / AgPixelGen.py
AGofficial's picture
Upload 2 files
45b0453 verified
raw
history blame
2.68 kB
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 "<error>"
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)