root commited on
Commit
edc3311
1 Parent(s): 1fbcebe

Front-Back connect test

Browse files
Files changed (1) hide show
  1. app.py +303 -305
app.py CHANGED
@@ -125,6 +125,16 @@ def call_JS(sd_method, **kwargs):
125
  param_str = json.dumps(kwargs)
126
  return f"async (...x) => {{ return await SD.{sd_method}({{ x, ...{param_str} }}) ?? []; }}"
127
 
 
 
 
 
 
 
 
 
 
 
128
 
129
  examples = [
130
  '水墨蝴蝶和牡丹花,国画',
@@ -146,312 +156,300 @@ if __name__ == "__main__":
146
  with block:
147
  gr.HTML(read_content("header.html"))
148
 
149
- # with gr.Tabs() as tabs:
150
-
151
- # with gr.TabItem("文生图(Text-to-img)"):
152
-
153
- # with gr.Group():
154
- # with gr.Box():
155
- # with gr.Row().style(mobile_collapse=False, equal_height=True):
156
- # text = gr.Textbox(
157
- # label="Prompt",
158
- # show_label=False,
159
- # max_lines=1,
160
- # placeholder="Input text(输入文字)",
161
- # interactive=True,
162
- # ).style(
163
- # border=(True, False, True, True),
164
- # rounded=(True, False, False, True),
165
- # container=False,
166
- # )
167
 
168
- # btn = gr.Button("Generate image").style(
169
- # margin=False,
170
- # rounded=(True, True, True, True),
171
- # )
172
- # with gr.Row().style(mobile_collapse=False, equal_height=True):
173
- # class_draw = gr.Dropdown(["通用(general)", "国画(traditional Chinese painting)",
174
- # "照片,摄影(picture photography)", "油画(oil painting)",
175
- # "铅笔素描(pencil sketch)", "CG",
176
- # "水彩画(watercolor painting)", "水墨画(ink and wash)",
177
- # "插画(illustrations)", "3D", "图生图(img2img)"],
178
- # label="生成类型(type)",
179
- # show_label=True,
180
- # value="通用(general)")
181
- # with gr.Row().style(mobile_collapse=False, equal_height=True):
182
- # style_draw = gr.CheckboxGroup(["蒸汽朋克(steampunk)", "电影摄影风格(film photography)",
183
- # "概念艺术(concept art)", "Warming lighting",
184
- # "Dramatic lighting", "Natural lighting",
185
- # "虚幻引擎(unreal engine)", "4k", "8k",
186
- # "充满细节(full details)"],
187
- # label="画面风格(style)",
188
- # show_label=True,
189
- # )
190
- # with gr.Row().style(mobile_collapse=False, equal_height=True):
191
- # sample_size = gr.Slider(minimum=1,
192
- # maximum=4,
193
- # step=1,
194
- # label="生成数量(number)",
195
- # show_label=True,
196
- # interactive=True,
197
- # )
198
-
199
- # gallery = gr.Gallery(
200
- # label="Generated images", show_label=False, elem_id="gallery"
201
- # ).style(grid=[2], height="auto")
202
-
203
- # gr.Examples(examples=examples, fn=request_images, inputs=text, outputs=gallery, examples_per_page=100)
204
- # text.submit(request_images, inputs=[text, class_draw, style_draw, sample_size], outputs=gallery)
205
- # btn.click(request_images, inputs=[text, class_draw, style_draw, sample_size], outputs=gallery)
206
-
207
- # with gr.TabItem("图生图(Img-to-Img)", id="img2img_tab"):
208
- # with gr.Row(elem_id="prompt_row"):
209
- # img2img_prompt = gr.Textbox(label="Prompt",
210
- # elem_id='img2img_prompt_input',
211
- # placeholder="神奇的森林,流淌的河流.",
212
- # lines=1,
213
- # max_lines=1 if txt2img_defaults['submit_on_enter'] == 'Yes' else 25,
214
- # value=img2img_defaults['prompt'],
215
- # show_label=False).style()
216
-
217
- # img2img_btn_mask = gr.Button("Generate", variant="primary", visible=False,
218
- # elem_id="img2img_mask_btn")
219
- # img2img_btn_editor = gr.Button("Generate", variant="primary", elem_id="img2img_edit_btn")
220
- # with gr.Row().style(equal_height=False):
221
- # with gr.Column():
222
- # gr.Markdown('#### 输入图像')
223
- # img2img_image_mask = gr.Image(
224
- # value=sample_img2img,
225
- # source="upload",
226
- # interactive=True,
227
- # type="pil", tool="sketch",
228
- # elem_id="img2img_mask",
229
- # image_mode="RGBA"
230
- # )
231
- # img2img_image_editor = gr.Image(
232
- # value=sample_img2img,
233
- # source="upload",
234
- # interactive=True,
235
- # type="pil",
236
- # tool="select",
237
- # visible=False,
238
- # image_mode="RGBA",
239
- # elem_id="img2img_editor"
240
- # )
241
-
242
- # with gr.Tabs():
243
- # with gr.TabItem("编辑设置"):
244
- # with gr.Row():
245
- # # disable Uncrop for now
246
- # choices=["Mask", "Crop", "Uncrop"]
247
- # img2img_image_editor_mode = gr.Radio(choices=["Mask"],
248
- # label="编辑模式",
249
- # value="Mask", elem_id='edit_mode_select',
250
- # visible=True)
251
- # img2img_mask = gr.Radio(choices=["保留mask区域", "生成mask区域"],
252
- # label="Mask 方式", type="index",
253
- # #value=img2img_mask_modes[img2img_defaults['mask_mode']],
254
- # value = "生成mask区域",
255
- # visible=True)
256
-
257
- # img2img_mask_blur_strength = gr.Slider(minimum=1, maximum=10, step=1,
258
- # label="How much blurry should the mask be? (to avoid hard edges)",
259
- # value=3, visible=False)
260
-
261
- # img2img_resize = gr.Radio(label="Resize mode",
262
- # choices=["Just resize", "Crop and resize",
263
- # "Resize and fill"],
264
- # type="index",
265
- # value=img2img_resize_modes[
266
- # img2img_defaults['resize_mode']], visible=False)
267
-
268
- # img2img_painterro_btn = gr.Button("Advanced Editor",visible=False)
269
- # # with gr.TabItem("Hints",visible=False):
270
- # # img2img_help = gr.Markdown(visible=False, value=uifn.help_text)
271
-
272
- # with gr.Column():
273
- # gr.Markdown('#### 编辑后的图片')
274
- # output_img2img_gallery = gr.Gallery(label="Images", elem_id="img2img_gallery_output").style(
275
- # grid=[4, 4, 4])
276
- # img2img_job_ui = job_manager.draw_gradio_ui() if job_manager else None
277
- # with gr.Column(visible=False):
278
- # with gr.Tabs(visible=False):
279
- # with gr.TabItem("", id="img2img_actions_tab",visible=False):
280
- # gr.Markdown("Select an image, then press one of the buttons below")
281
- # with gr.Row():
282
- # output_img2img_copy_to_clipboard_btn = gr.Button("Copy to clipboard")
283
- # output_img2img_copy_to_input_btn = gr.Button("Push to img2img input")
284
- # output_img2img_copy_to_mask_btn = gr.Button("Push to img2img input mask")
285
-
286
- # gr.Markdown("Warning: This will clear your current image and mask settings!")
287
- # with gr.TabItem("", id="img2img_output_info_tab",visible=False):
288
- # output_img2img_params = gr.Textbox(label="Generation parameters")
289
- # with gr.Row():
290
- # output_img2img_copy_params = gr.Button("Copy full parameters").click(
291
- # inputs=output_img2img_params, outputs=[],
292
- # _js='(x) => {navigator.clipboard.writeText(x.replace(": ",":"))}', fn=None,
293
- # show_progress=False)
294
- # output_img2img_seed = gr.Number(label='Seed', interactive=False, visible=False)
295
- # output_img2img_copy_seed = gr.Button("Copy only seed").click(
296
- # inputs=output_img2img_seed, outputs=[],
297
- # _js=call_JS("gradioInputToClipboard"), fn=None, show_progress=False)
298
- # output_img2img_stats = gr.HTML(label='Stats')
299
-
300
- # gr.Markdown('# 编辑设置')
301
-
302
- # with gr.Row():
303
- # with gr.Column():
304
- # img2img_width = gr.Slider(minimum=64, maximum=2048, step=64, label="图片宽度",
305
- # value=img2img_defaults["width"])
306
- # img2img_height = gr.Slider(minimum=64, maximum=2048, step=64, label="图片高度",
307
- # value=img2img_defaults["height"])
308
- # img2img_cfg = gr.Slider(minimum=-40.0, maximum=30.0, step=0.5,
309
- # label='文本引导强度',
310
- # value=img2img_defaults['cfg_scale'], elem_id='cfg_slider')
311
- # img2img_seed = gr.Textbox(label="随机种子", lines=1, max_lines=1,
312
- # value=img2img_defaults["seed"])
313
- # img2img_batch_count = gr.Slider(minimum=1, maximum=50, step=1,
314
- # label='生成数量',
315
- # value=img2img_defaults['n_iter'])
316
- # img2img_dimensions_info_text_box = gr.Textbox(
317
- # label="长宽比设置")
318
- # with gr.Column():
319
- # img2img_steps = gr.Slider(minimum=1, maximum=250, step=1, label="采样步数",
320
- # value=img2img_defaults['ddim_steps'])
321
-
322
- # img2img_sampling = gr.Dropdown(label='采样方式',
323
- # choices=["DDIM", 'k_dpm_2_a', 'k_dpm_2', 'k_euler_a', 'k_euler',
324
- # 'k_heun', 'k_lms'],
325
- # value=img2img_defaults['sampler_name'])
326
-
327
- # img2img_denoising = gr.Slider(minimum=0.0, maximum=1.0, step=0.01, label='Denoising Strength',
328
- # value=img2img_defaults['denoising_strength'],visible=False)
329
-
330
- # img2img_toggles = gr.CheckboxGroup(label='', choices=img2img_toggles,
331
- # value=img2img_toggle_defaults, type="index",visible=False)
332
-
333
- # img2img_realesrgan_model_name = gr.Dropdown(label='RealESRGAN model',
334
- # choices=['RealESRGAN_x4plus',
335
- # 'RealESRGAN_x4plus_anime_6B'],
336
- # value='RealESRGAN_x4plus',
337
- # visible=RealESRGAN is not None) # TODO: Feels like I shouldnt slot it in here.
338
-
339
- # img2img_embeddings = gr.File(label="Embeddings file for textual inversion",
340
- # visible=show_embeddings)
341
-
342
- # img2img_image_editor_mode.change(
343
- # uifn.change_image_editor_mode,
344
- # [img2img_image_editor_mode,
345
- # img2img_image_editor,
346
- # img2img_image_mask,
347
- # img2img_resize,
348
- # img2img_width,
349
- # img2img_height
350
- # ],
351
- # [img2img_image_editor, img2img_image_mask, img2img_btn_editor, img2img_btn_mask,
352
- # img2img_painterro_btn, img2img_mask, img2img_mask_blur_strength]
353
- # )
354
-
355
- # # img2img_image_editor_mode.change(
356
- # # uifn.update_image_mask,
357
- # # [img2img_image_editor, img2img_resize, img2img_width, img2img_height],
358
- # # img2img_image_mask
359
- # # )
360
-
361
- # # output_txt2img_copy_to_input_btn.click(
362
- # # uifn.copy_img_to_input,
363
- # # [output_txt2img_gallery],
364
- # # [img2img_image_editor, img2img_image_mask, tabs],
365
- # # _js=call_JS("moveImageFromGallery",
366
- # # fromId="txt2img_gallery_output",
367
- # # toId="img2img_editor")
368
- # # )
369
-
370
- # output_img2img_copy_to_input_btn.click(
371
- # uifn.copy_img_to_edit,
372
- # [output_img2img_gallery],
373
- # [img2img_image_editor, tabs, img2img_image_editor_mode],
374
- # _js=call_JS("moveImageFromGallery",
375
- # fromId="img2img_gallery_output",
376
- # toId="img2img_editor")
377
- # )
378
- # output_img2img_copy_to_mask_btn.click(
379
- # uifn.copy_img_to_mask,
380
- # [output_img2img_gallery],
381
- # [img2img_image_mask, tabs, img2img_image_editor_mode],
382
- # _js=call_JS("moveImageFromGallery",
383
- # fromId="img2img_gallery_output",
384
- # toId="img2img_editor")
385
- # )
386
-
387
- # output_img2img_copy_to_clipboard_btn.click(fn=None, inputs=output_img2img_gallery, outputs=[],
388
- # _js=call_JS("copyImageFromGalleryToClipboard",
389
- # fromId="img2img_gallery_output")
390
- # )
391
-
392
- # img2img_func = None
393
- # img2img_inputs = [img2img_prompt, img2img_image_editor_mode, img2img_mask,
394
- # img2img_mask_blur_strength, img2img_steps, img2img_sampling, img2img_toggles,
395
- # img2img_realesrgan_model_name, img2img_batch_count, img2img_cfg,
396
- # img2img_denoising, img2img_seed, img2img_height, img2img_width, img2img_resize,
397
- # img2img_image_editor, img2img_image_mask, img2img_embeddings]
398
- # img2img_outputs = [output_img2img_gallery, output_img2img_seed, output_img2img_params,
399
- # output_img2img_stats]
400
-
401
- # # If a JobManager was passed in then wrap the Generate functions
402
- # if img2img_job_ui:
403
- # img2img_func, img2img_inputs, img2img_outputs = img2img_job_ui.wrap_func(
404
- # func=img2img_func,
405
- # inputs=img2img_inputs,
406
- # outputs=img2img_outputs,
407
- # )
408
-
409
- # img2img_btn_mask.click(
410
- # img2img_func,
411
- # img2img_inputs,
412
- # img2img_outputs
413
- # )
414
-
415
- # def img2img_submit_params():
416
- # # print([img2img_prompt, img2img_image_editor_mode, img2img_mask,
417
- # # img2img_mask_blur_strength, img2img_steps, img2img_sampling, img2img_toggles,
418
- # # img2img_realesrgan_model_name, img2img_batch_count, img2img_cfg,
419
- # # img2img_denoising, img2img_seed, img2img_height, img2img_width, img2img_resize,
420
- # # img2img_image_editor, img2img_image_mask, img2img_embeddings])
421
- # return (img2img_func,
422
- # img2img_inputs,
423
- # img2img_outputs)
424
-
425
- # img2img_btn_editor.click(*img2img_submit_params())
426
-
427
- # # GENERATE ON ENTER
428
- # img2img_prompt.submit(None, None, None,
429
- # _js=call_JS("clickFirstVisibleButton",
430
- # rowId="prompt_row"))
431
-
432
- # img2img_painterro_btn.click(None,
433
- # [img2img_image_editor, img2img_image_mask, img2img_image_editor_mode],
434
- # [img2img_image_editor, img2img_image_mask],
435
- # _js=call_JS("Painterro.init", toId="img2img_editor")
436
- # )
437
-
438
- # img2img_width.change(fn=uifn.update_dimensions_info, inputs=[img2img_width, img2img_height],
439
- # outputs=img2img_dimensions_info_text_box)
440
- # img2img_height.change(fn=uifn.update_dimensions_info, inputs=[img2img_width, img2img_height],
441
- # outputs=img2img_dimensions_info_text_box)
442
-
443
-
444
- with gr.Row():
445
- button1 = gr.Button("Button", visible="primary")
446
- button2 = gr.Button("Button", variant="primary")
447
- image_mask = gr.Image(
448
- value=None,
449
- source="upload",
450
- interactive=True,
451
- tpye="pil",
452
- tool="sketch",
453
- image_mode="RGBA",
454
- )
455
  gr.HTML(read_content("footer.html"))
456
  # gr.Image('./contributors.png')
457
 
 
125
  param_str = json.dumps(kwargs)
126
  return f"async (...x) => {{ return await SD.{sd_method}({{ x, ...{param_str} }}) ?? []; }}"
127
 
128
+ def img2img(input_list):
129
+ url = "http://flagart.baai.ac.cn/api/img2img/"
130
+ d = {"data":input_list}
131
+ r = requests.post(url, json=d, headers={"Content-Type": "application/json", "Accept": "*/*", "Accept-Encoding": "gzip, deflate, br", "Connection": "keep-alive"})
132
+ print(r)
133
+ result_text = r.text
134
+ content = json.loads(result_text)["data"][0]
135
+ print(content)
136
+ return
137
+
138
 
139
  examples = [
140
  '水墨蝴蝶和牡丹花,国画',
 
156
  with block:
157
  gr.HTML(read_content("header.html"))
158
 
159
+ with gr.Tabs() as tabs:
160
+
161
+ with gr.TabItem("文生图(Text-to-img)"):
162
+
163
+ with gr.Group():
164
+ with gr.Box():
165
+ with gr.Row().style(mobile_collapse=False, equal_height=True):
166
+ text = gr.Textbox(
167
+ label="Prompt",
168
+ show_label=False,
169
+ max_lines=1,
170
+ placeholder="Input text(输入文字)",
171
+ interactive=True,
172
+ ).style(
173
+ border=(True, False, True, True),
174
+ rounded=(True, False, False, True),
175
+ container=False,
176
+ )
177
 
178
+ btn = gr.Button("Generate image").style(
179
+ margin=False,
180
+ rounded=(True, True, True, True),
181
+ )
182
+ with gr.Row().style(mobile_collapse=False, equal_height=True):
183
+ class_draw = gr.Dropdown(["通用(general)", "国画(traditional Chinese painting)",
184
+ "照片,摄影(picture photography)", "油画(oil painting)",
185
+ "铅笔素描(pencil sketch)", "CG",
186
+ "水彩画(watercolor painting)", "水墨画(ink and wash)",
187
+ "插画(illustrations)", "3D", "图生图(img2img)"],
188
+ label="生成类型(type)",
189
+ show_label=True,
190
+ value="通用(general)")
191
+ with gr.Row().style(mobile_collapse=False, equal_height=True):
192
+ style_draw = gr.CheckboxGroup(["蒸汽朋克(steampunk)", "电影摄影风格(film photography)",
193
+ "概念艺术(concept art)", "Warming lighting",
194
+ "Dramatic lighting", "Natural lighting",
195
+ "虚幻引擎(unreal engine)", "4k", "8k",
196
+ "充满细节(full details)"],
197
+ label="画面风格(style)",
198
+ show_label=True,
199
+ )
200
+ with gr.Row().style(mobile_collapse=False, equal_height=True):
201
+ sample_size = gr.Slider(minimum=1,
202
+ maximum=4,
203
+ step=1,
204
+ label="生成数量(number)",
205
+ show_label=True,
206
+ interactive=True,
207
+ )
208
+
209
+ gallery = gr.Gallery(
210
+ label="Generated images", show_label=False, elem_id="gallery"
211
+ ).style(grid=[2], height="auto")
212
+
213
+ gr.Examples(examples=examples, fn=request_images, inputs=text, outputs=gallery, examples_per_page=100)
214
+ text.submit(request_images, inputs=[text, class_draw, style_draw, sample_size], outputs=gallery)
215
+ btn.click(request_images, inputs=[text, class_draw, style_draw, sample_size], outputs=gallery)
216
+
217
+ with gr.TabItem("图生图(Img-to-Img)", id="img2img_tab"):
218
+ with gr.Row(elem_id="prompt_row"):
219
+ img2img_prompt = gr.Textbox(label="Prompt",
220
+ elem_id='img2img_prompt_input',
221
+ placeholder="神奇的森林,流淌的河流.",
222
+ lines=1,
223
+ max_lines=1 if txt2img_defaults['submit_on_enter'] == 'Yes' else 25,
224
+ value=img2img_defaults['prompt'],
225
+ show_label=False).style()
226
+
227
+ img2img_btn_mask = gr.Button("Generate", variant="primary", visible=False,
228
+ elem_id="img2img_mask_btn")
229
+ img2img_btn_editor = gr.Button("Generate", variant="primary", elem_id="img2img_edit_btn")
230
+ with gr.Row().style(equal_height=False):
231
+ with gr.Column():
232
+ gr.Markdown('#### 输入图像')
233
+ img2img_image_mask = gr.Image(
234
+ value=sample_img2img,
235
+ source="upload",
236
+ interactive=True,
237
+ type="pil", tool="sketch",
238
+ elem_id="img2img_mask",
239
+ image_mode="RGBA"
240
+ )
241
+ img2img_image_editor = gr.Image(
242
+ value=sample_img2img,
243
+ source="upload",
244
+ interactive=True,
245
+ type="pil",
246
+ tool="select",
247
+ visible=False,
248
+ image_mode="RGBA",
249
+ elem_id="img2img_editor"
250
+ )
251
+
252
+ with gr.Tabs():
253
+ with gr.TabItem("编辑设置"):
254
+ with gr.Row():
255
+ # disable Uncrop for now
256
+ choices=["Mask", "Crop", "Uncrop"]
257
+ img2img_image_editor_mode = gr.Radio(choices=["Mask"],
258
+ label="编辑模式",
259
+ value="Mask", elem_id='edit_mode_select',
260
+ visible=True)
261
+ img2img_mask = gr.Radio(choices=["保留mask区域", "生成mask区域"],
262
+ label="Mask 方式", type="index",
263
+ #value=img2img_mask_modes[img2img_defaults['mask_mode']],
264
+ value = "生成mask区域",
265
+ visible=True)
266
+
267
+ img2img_mask_blur_strength = gr.Slider(minimum=1, maximum=10, step=1,
268
+ label="How much blurry should the mask be? (to avoid hard edges)",
269
+ value=3, visible=False)
270
+
271
+ img2img_resize = gr.Radio(label="Resize mode",
272
+ choices=["Just resize", "Crop and resize",
273
+ "Resize and fill"],
274
+ type="index",
275
+ value=img2img_resize_modes[
276
+ img2img_defaults['resize_mode']], visible=False)
277
+
278
+ img2img_painterro_btn = gr.Button("Advanced Editor",visible=False)
279
+ # with gr.TabItem("Hints",visible=False):
280
+ # img2img_help = gr.Markdown(visible=False, value=uifn.help_text)
281
+
282
+ with gr.Column():
283
+ gr.Markdown('#### 编辑后的图片')
284
+ output_img2img_gallery = gr.Gallery(label="Images", elem_id="img2img_gallery_output").style(
285
+ grid=[4, 4, 4])
286
+ img2img_job_ui = job_manager.draw_gradio_ui() if job_manager else None
287
+ with gr.Column(visible=False):
288
+ with gr.Tabs(visible=False):
289
+ with gr.TabItem("", id="img2img_actions_tab",visible=False):
290
+ gr.Markdown("Select an image, then press one of the buttons below")
291
+ with gr.Row():
292
+ output_img2img_copy_to_clipboard_btn = gr.Button("Copy to clipboard")
293
+ output_img2img_copy_to_input_btn = gr.Button("Push to img2img input")
294
+ output_img2img_copy_to_mask_btn = gr.Button("Push to img2img input mask")
295
+
296
+ gr.Markdown("Warning: This will clear your current image and mask settings!")
297
+ with gr.TabItem("", id="img2img_output_info_tab",visible=False):
298
+ output_img2img_params = gr.Textbox(label="Generation parameters")
299
+ with gr.Row():
300
+ output_img2img_copy_params = gr.Button("Copy full parameters").click(
301
+ inputs=output_img2img_params, outputs=[],
302
+ _js='(x) => {navigator.clipboard.writeText(x.replace(": ",":"))}', fn=None,
303
+ show_progress=False)
304
+ output_img2img_seed = gr.Number(label='Seed', interactive=False, visible=False)
305
+ output_img2img_copy_seed = gr.Button("Copy only seed").click(
306
+ inputs=output_img2img_seed, outputs=[],
307
+ _js=call_JS("gradioInputToClipboard"), fn=None, show_progress=False)
308
+ output_img2img_stats = gr.HTML(label='Stats')
309
+
310
+ gr.Markdown('# 编辑设置')
311
+
312
+ with gr.Row():
313
+ with gr.Column():
314
+ img2img_width = gr.Slider(minimum=64, maximum=2048, step=64, label="图片宽度",
315
+ value=img2img_defaults["width"])
316
+ img2img_height = gr.Slider(minimum=64, maximum=2048, step=64, label="图片高度",
317
+ value=img2img_defaults["height"])
318
+ img2img_cfg = gr.Slider(minimum=-40.0, maximum=30.0, step=0.5,
319
+ label='文本引导强度',
320
+ value=img2img_defaults['cfg_scale'], elem_id='cfg_slider')
321
+ img2img_seed = gr.Textbox(label="随机种子", lines=1, max_lines=1,
322
+ value=img2img_defaults["seed"])
323
+ img2img_batch_count = gr.Slider(minimum=1, maximum=50, step=1,
324
+ label='生成数量',
325
+ value=img2img_defaults['n_iter'])
326
+ img2img_dimensions_info_text_box = gr.Textbox(
327
+ label="长宽比设置")
328
+ with gr.Column():
329
+ img2img_steps = gr.Slider(minimum=1, maximum=250, step=1, label="采样步数",
330
+ value=img2img_defaults['ddim_steps'])
331
+
332
+ img2img_sampling = gr.Dropdown(label='采样方式',
333
+ choices=["DDIM", 'k_dpm_2_a', 'k_dpm_2', 'k_euler_a', 'k_euler',
334
+ 'k_heun', 'k_lms'],
335
+ value=img2img_defaults['sampler_name'])
336
+
337
+ img2img_denoising = gr.Slider(minimum=0.0, maximum=1.0, step=0.01, label='Denoising Strength',
338
+ value=img2img_defaults['denoising_strength'],visible=False)
339
+
340
+ img2img_toggles = gr.CheckboxGroup(label='', choices=img2img_toggles,
341
+ value=img2img_toggle_defaults, type="index",visible=False)
342
+
343
+ img2img_realesrgan_model_name = gr.Dropdown(label='RealESRGAN model',
344
+ choices=['RealESRGAN_x4plus',
345
+ 'RealESRGAN_x4plus_anime_6B'],
346
+ value='RealESRGAN_x4plus',
347
+ visible=RealESRGAN is not None) # TODO: Feels like I shouldnt slot it in here.
348
+
349
+ img2img_embeddings = gr.File(label="Embeddings file for textual inversion",
350
+ visible=show_embeddings)
351
+
352
+ img2img_image_editor_mode.change(
353
+ uifn.change_image_editor_mode,
354
+ [img2img_image_editor_mode,
355
+ img2img_image_editor,
356
+ img2img_image_mask,
357
+ img2img_resize,
358
+ img2img_width,
359
+ img2img_height
360
+ ],
361
+ [img2img_image_editor, img2img_image_mask, img2img_btn_editor, img2img_btn_mask,
362
+ img2img_painterro_btn, img2img_mask, img2img_mask_blur_strength]
363
+ )
364
+
365
+ # img2img_image_editor_mode.change(
366
+ # uifn.update_image_mask,
367
+ # [img2img_image_editor, img2img_resize, img2img_width, img2img_height],
368
+ # img2img_image_mask
369
+ # )
370
+
371
+ # output_txt2img_copy_to_input_btn.click(
372
+ # uifn.copy_img_to_input,
373
+ # [output_txt2img_gallery],
374
+ # [img2img_image_editor, img2img_image_mask, tabs],
375
+ # _js=call_JS("moveImageFromGallery",
376
+ # fromId="txt2img_gallery_output",
377
+ # toId="img2img_editor")
378
+ # )
379
+
380
+ output_img2img_copy_to_input_btn.click(
381
+ uifn.copy_img_to_edit,
382
+ [output_img2img_gallery],
383
+ [img2img_image_editor, tabs, img2img_image_editor_mode],
384
+ _js=call_JS("moveImageFromGallery",
385
+ fromId="img2img_gallery_output",
386
+ toId="img2img_editor")
387
+ )
388
+ output_img2img_copy_to_mask_btn.click(
389
+ uifn.copy_img_to_mask,
390
+ [output_img2img_gallery],
391
+ [img2img_image_mask, tabs, img2img_image_editor_mode],
392
+ _js=call_JS("moveImageFromGallery",
393
+ fromId="img2img_gallery_output",
394
+ toId="img2img_editor")
395
+ )
396
+
397
+ output_img2img_copy_to_clipboard_btn.click(fn=None, inputs=output_img2img_gallery, outputs=[],
398
+ _js=call_JS("copyImageFromGalleryToClipboard",
399
+ fromId="img2img_gallery_output")
400
+ )
401
+
402
+ img2img_func = img2img
403
+ img2img_inputs = [img2img_prompt, img2img_image_editor_mode, img2img_mask,
404
+ img2img_mask_blur_strength, img2img_steps, img2img_sampling, img2img_toggles,
405
+ img2img_realesrgan_model_name, img2img_batch_count, img2img_cfg,
406
+ img2img_denoising, img2img_seed, img2img_height, img2img_width, img2img_resize,
407
+ img2img_image_editor, img2img_image_mask, img2img_embeddings]
408
+ img2img_outputs = [output_img2img_gallery, output_img2img_seed, output_img2img_params,
409
+ output_img2img_stats]
410
+
411
+ # If a JobManager was passed in then wrap the Generate functions
412
+ if img2img_job_ui:
413
+ img2img_func, img2img_inputs, img2img_outputs = img2img_job_ui.wrap_func(
414
+ func=img2img_func,
415
+ inputs=img2img_inputs,
416
+ outputs=img2img_outputs,
417
+ )
418
+
419
+ img2img_btn_mask.click(
420
+ img2img_func,
421
+ img2img_inputs,
422
+ img2img_outputs
423
+ )
424
+
425
+ def img2img_submit_params():
426
+ # print([img2img_prompt, img2img_image_editor_mode, img2img_mask,
427
+ # img2img_mask_blur_strength, img2img_steps, img2img_sampling, img2img_toggles,
428
+ # img2img_realesrgan_model_name, img2img_batch_count, img2img_cfg,
429
+ # img2img_denoising, img2img_seed, img2img_height, img2img_width, img2img_resize,
430
+ # img2img_image_editor, img2img_image_mask, img2img_embeddings])
431
+ return (img2img_func,
432
+ img2img_inputs,
433
+ img2img_outputs)
434
+
435
+ img2img_btn_editor.click(*img2img_submit_params())
436
+
437
+ # GENERATE ON ENTER
438
+ img2img_prompt.submit(None, None, None,
439
+ _js=call_JS("clickFirstVisibleButton",
440
+ rowId="prompt_row"))
441
+
442
+ img2img_painterro_btn.click(None,
443
+ [img2img_image_editor, img2img_image_mask, img2img_image_editor_mode],
444
+ [img2img_image_editor, img2img_image_mask],
445
+ _js=call_JS("Painterro.init", toId="img2img_editor")
446
+ )
447
+
448
+ img2img_width.change(fn=uifn.update_dimensions_info, inputs=[img2img_width, img2img_height],
449
+ outputs=img2img_dimensions_info_text_box)
450
+ img2img_height.change(fn=uifn.update_dimensions_info, inputs=[img2img_width, img2img_height],
451
+ outputs=img2img_dimensions_info_text_box)
452
+
 
 
 
 
 
 
 
 
 
 
 
 
453
  gr.HTML(read_content("footer.html"))
454
  # gr.Image('./contributors.png')
455