Spaces:
Runtime error
Runtime error
| import io | |
| import cv2 | |
| import base64 | |
| import requests | |
| from PIL import Image | |
| """ | |
| To use this example make sure you've done the following steps before executing: | |
| 1. Ensure automatic1111 is running in api mode with the controlnet extension. | |
| Use the following command in your terminal to activate: | |
| ./webui.sh --no-half --api | |
| 2. Validate python environment meet package dependencies. | |
| If running in a local repo you'll likely need to pip install cv2, requests and PIL | |
| """ | |
| class ControlnetRequest: | |
| def __init__(self, prompt, path): | |
| self.url = "http://localhost:7860/sdapi/v1/txt2img" | |
| self.prompt = prompt | |
| self.img_path = path | |
| self.body = None | |
| def build_body(self): | |
| self.body = { | |
| "prompt": self.prompt, | |
| "negative_prompt": "", | |
| "batch_size": 1, | |
| "steps": 20, | |
| "cfg_scale": 7, | |
| "alwayson_scripts": { | |
| "controlnet": { | |
| "args": [ | |
| { | |
| "enabled": True, | |
| "module": "none", | |
| "model": "canny", | |
| "weight": 1.0, | |
| "image": self.read_image(), | |
| "resize_mode": 1, | |
| "lowvram": False, | |
| "processor_res": 64, | |
| "threshold_a": 64, | |
| "threshold_b": 64, | |
| "guidance_start": 0.0, | |
| "guidance_end": 1.0, | |
| "control_mode": 0, | |
| "pixel_perfect": False | |
| } | |
| ] | |
| } | |
| } | |
| } | |
| def send_request(self): | |
| response = requests.post(url=self.url, json=self.body) | |
| return response.json() | |
| def read_image(self): | |
| img = cv2.imread(self.img_path) | |
| retval, bytes = cv2.imencode('.png', img) | |
| encoded_image = base64.b64encode(bytes).decode('utf-8') | |
| return encoded_image | |
| if __name__ == '__main__': | |
| path = 'stock_mountain.png' | |
| prompt = 'a large avalanche' | |
| control_net = ControlnetRequest(prompt, path) | |
| control_net.build_body() | |
| output = control_net.send_request() | |
| result = output['images'][0] | |
| image = Image.open(io.BytesIO(base64.b64decode(result.split(",", 1)[0]))) | |
| image.show() | |