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