imagencpu / api_example.py
Abe
initial copy
8247a04
raw
history blame
2.27 kB
import requests
import io
from PIL import Image
import os
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()
# Hugging Face API token (need to set in .env or environment)
HF_TOKEN = os.getenv("HF_TOKEN")
# API base URL
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"
# Prepare form data
data = {
"prompt": prompt,
}
if model:
data["model"] = model
if negative_prompt:
data["negative_prompt"] = negative_prompt
# Make API request
response = requests.post(url, data=data)
if response.status_code == 200:
# Convert response to PIL image
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"
# Prepare form data and files
data = {}
if prompt:
data["prompt"] = prompt
if model:
data["model"] = model
files = {
"image": open(image_path, "rb")
}
# Make API request
response = requests.post(url, data=data, files=files)
if response.status_code == 200:
# Convert response to PIL image
image = Image.open(io.BytesIO(response.content))
return image
else:
print(f"Error: {response.status_code}")
print(response.text)
return None
if __name__ == "__main__":
# Example usage
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):")
# Uncomment and modify path to run:
# result = image_to_image("input.png", "Turn this into a fantasy scene")
# if result:
# result.save("img2img_output.png")
# print("Image saved as img2img_output.png")