1 changed files with 63 additions and 0 deletions
@ -0,0 +1,63 @@ |
|||||
|
import random |
||||
|
import requests |
||||
|
import io |
||||
|
import base64 |
||||
|
from PIL import Image |
||||
|
|
||||
|
def generate_cat_images(ip, port, model_params, prompt="a cat", num_images=5): |
||||
|
for i in range(num_images): |
||||
|
# Generate a random seed for each image |
||||
|
seed = random.randint(0, 4294967295) |
||||
|
|
||||
|
# Build the payload for the txt2img API endpoint |
||||
|
payload = { |
||||
|
"prompt": prompt, |
||||
|
"negative_prompt": "", # Modify if needed |
||||
|
"sd_model_checkpoint": model_params["model"], |
||||
|
"steps": model_params["steps"], |
||||
|
"cfg_scale": model_params["cfg_scale"], |
||||
|
"width": model_params["width"], |
||||
|
"height": model_params["height"], |
||||
|
"sampler_index": model_params["sampler"], |
||||
|
"seed": seed |
||||
|
} |
||||
|
|
||||
|
try: |
||||
|
# Include the custom port in the URL |
||||
|
response = requests.post( |
||||
|
url=f'http://{ip}:{port}/sdapi/v1/txt2img', |
||||
|
json=payload, |
||||
|
timeout=30 |
||||
|
) |
||||
|
response.raise_for_status() # Check for HTTP errors |
||||
|
r = response.json() |
||||
|
|
||||
|
# Process returned images (the API returns a list in r['images']) |
||||
|
for img_data in r.get('images', []): |
||||
|
# Remove any header if present (e.g., "data:image/png;base64,") |
||||
|
img_base64 = img_data.split(",", 1)[-1] |
||||
|
image = Image.open(io.BytesIO(base64.b64decode(img_base64))) |
||||
|
|
||||
|
# Save the image with a unique filename |
||||
|
filename = f"cat_{i}.png" |
||||
|
image.save(filename) |
||||
|
print(f"Saved {filename}") |
||||
|
except requests.exceptions.Timeout: |
||||
|
print(f"Timeout occurred while generating image {i}") |
||||
|
except Exception as e: |
||||
|
print(f"An error occurred on iteration {i}: {e}") |
||||
|
|
||||
|
if __name__ == "__main__": |
||||
|
ip = "172.30.200.3" |
||||
|
port = 35000 # Custom port for the API |
||||
|
# Define your model parameters (update 'model' to your actual checkpoint name) |
||||
|
model_params = { |
||||
|
"model": "sd3.5_checkpoint.ckpt", # Replace with your actual model checkpoint file |
||||
|
"steps": 20, |
||||
|
"cfg_scale": 7.0, |
||||
|
"width": 512, |
||||
|
"height": 512, |
||||
|
"sampler": "Euler" # Adjust based on your setup |
||||
|
} |
||||
|
|
||||
|
generate_cat_images(ip, port, model_params, prompt="a cat", num_images=5) |
Loading…
Reference in new issue