File size: 2,269 Bytes
8247a04
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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")