MCPcopy
hub / github.com/vladmandic/sdnext / generate

Function generate

cli/generate.py:121–153  ·  view source on GitHub ↗
(prompt = None, options = None, quiet = False)

Source from the content-addressed store, hash-verified

119
120
121async def generate(prompt = None, options = None, quiet = False): # pylint: disable=redefined-outer-name
122 global sd # pylint: disable=global-statement
123 if options:
124 sd = Map(options)
125 if prompt is not None:
126 sd.generate.prompt = prompt
127 if not quiet:
128 log.info({ 'generate': sd.generate })
129 if sd.get('options', None) is None:
130 sd['options'] = await get('/sdapi/v1/options')
131 names = []
132 b64s = []
133 images = []
134 info = Map({})
135 data = await post('/sdapi/v1/txt2img', sd.generate)
136 if 'error' in data:
137 log.error({ 'generate': data['error'], 'reason': data['reason'] })
138 return Map({})
139 info = Map(json.loads(data['info']))
140 log.debug({ 'info': info })
141 images = data['images']
142 short = info.prompt[:min(len(info.prompt), 96)] # limit prompt part of filename to 64 chars
143 for i in range(len(images)):
144 b64s.append(images[i])
145 images[i] = Image.open(io.BytesIO(base64.b64decode(images[i].split(',',1)[0])))
146 name = '{seed:0>9} {short}'.format(short = short, seed = info.all_seeds[i]) # pylint: disable=consider-using-f-string
147 name = safestring(name) + '.jpg'
148 f = os.path.join(sd.paths.root, sd.paths.generate, name)
149 names.append(f)
150 if not quiet:
151 log.info({ 'image': { 'name': f, 'size': images[i].size } })
152 images[i].save(f, 'JPEG', exif = exif(info, i), optimize = True, quality = 70)
153 return Map({ 'name': names, 'image': images, 'b64': b64s, 'info': info })
154
155
156async def upscale(data):

Callers 1

mainFunction · 0.70

Calls 9

MapClass · 0.90
getFunction · 0.90
postFunction · 0.90
safestringFunction · 0.90
exifFunction · 0.85
infoMethod · 0.80
formatMethod · 0.80
getMethod · 0.45
saveMethod · 0.45

Tested by

no test coverage detected