|
import requests |
|
import io |
|
from PIL import Image |
|
import os |
|
from dotenv import load_dotenv |
|
|
|
|
|
load_dotenv() |
|
|
|
|
|
HF_TOKEN = os.getenv("HF_TOKEN") |
|
|
|
|
|
API_BASE = "http://localhost:8000" |
|
|
|
def text_to_image(prompt, model=None, negative_prompt=None): |
|
""" |
|
Generate image from text using the API |
|
""" |
|
url = f"{API_BASE}/text-to-image" |
|
|
|
|
|
data = { |
|
"prompt": prompt, |
|
} |
|
|
|
if model: |
|
data["model"] = model |
|
|
|
if negative_prompt: |
|
data["negative_prompt"] = negative_prompt |
|
|
|
|
|
response = requests.post(url, data=data) |
|
|
|
if response.status_code == 200: |
|
|
|
image = Image.open(io.BytesIO(response.content)) |
|
return image |
|
else: |
|
print(f"Error: {response.status_code}") |
|
print(response.text) |
|
return None |
|
|
|
def image_to_image(image_path, prompt=None, model=None): |
|
""" |
|
Transform image using the API |
|
""" |
|
url = f"{API_BASE}/image-to-image" |
|
|
|
|
|
data = {} |
|
if prompt: |
|
data["prompt"] = prompt |
|
|
|
if model: |
|
data["model"] = model |
|
|
|
files = { |
|
"image": open(image_path, "rb") |
|
} |
|
|
|
|
|
response = requests.post(url, data=data, files=files) |
|
|
|
if response.status_code == 200: |
|
|
|
image = Image.open(io.BytesIO(response.content)) |
|
return image |
|
else: |
|
print(f"Error: {response.status_code}") |
|
print(response.text) |
|
return None |
|
|
|
if __name__ == "__main__": |
|
|
|
print("Text to Image example:") |
|
image = text_to_image("A beautiful mountain landscape at sunset") |
|
if image: |
|
image.save("text2img_output.png") |
|
print("Image saved as text2img_output.png") |
|
|
|
print("Image to Image example (requires an input image):") |
|
|
|
|
|
|
|
|
|
|
|
|