import requests
from PIL import Image, ImageEnhance, ImageFilter
from io import BytesIO
from config import HF_API_KEY
# Alternative model
MODEL_NAME = "CompVis/stable-diffusion-v1-4"
def generate_image_from_text(prompt):
"""
Generates an image from a text prompt using the alternative Stable Diffusion model.
"""
api_url = "https://api-inference.huggingface.co/models/stabilityai/stable-diffusion-3-medium-diffusers"
headers = {"Authorization": f"Bearer {HF_API_KEY}"}
payload = {"inputs": prompt}
response = requests.post(api_url, headers=headers, json=payload)
if response.status_code == 200:
return Image.open(BytesIO(response.content))
else:
raise Exception(f"Request failed with status code {response.status_code}: {response.text}")
def post_process_image(image):
bright_image = ImageEnhance.Brightness(image).enhance(1.2)
contrast_image = ImageEnhance.Contrast(bright_image).enhance(1.35)
soft_focus_image = contrast_image.filter(ImageFilter.GaussianBlur(radius=2))
return soft_focus_image
def main():
print("Welcome to the Post-Processing Magic Workshop!")
print("This program generates an image from text and applies post-processing effects.")
print("Type 'exit' to quit.\n")
while True:
user_input = input("Enter a description for the image (or 'exit' to quit):\n")
if user_input.lower() == 'exit':
print("Goodbye!")
break
try:
print("\nGenerating image...")
image = generate_image_from_text(user_input)
print("Applying post-processing effects...\n")
processed_image = post_process_image(image)
processed_image.show()
save_option = input("Do you want to save the processed image? (yes/no): ").strip().lower()
if save_option == 'yes':
file_name = input("Enter a name for the image file (without extension): ").strip()
processed_image.save(f"{file_name}.png")
print(f"Image saved as {file_name}.png\n")
print("-" * 80 + "\n")
except Exception as e:
print(f"An error occurred: {e}\n")
if __name__ == "__main__":
main()