restyle_frames.py: --control edge uploads a canny-style map for comfyui_sd controlnet
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
ecdaeda47e
commit
e0699d47b5
@ -81,12 +81,19 @@ def job_output_asset(jid):
|
|||||||
return mine[0]['id'] if mine else None
|
return mine[0]['id'] if mine else None
|
||||||
|
|
||||||
|
|
||||||
def farm_edit(Image, src_png, out_png, operator, params, tmp_dir):
|
def farm_edit(Image, src_png, out_png, operator, params, tmp_dir, control='flat'):
|
||||||
im = Image.open(src_png).convert('RGBA')
|
im = Image.open(src_png).convert('RGBA')
|
||||||
alpha = im.split()[3]
|
alpha = im.split()[3]
|
||||||
|
tmp_in = os.path.join(tmp_dir, 'mb_in.png')
|
||||||
|
if control == 'edge':
|
||||||
|
# canny-style conditioning image (thin white lines on black) for
|
||||||
|
# ControlNet graphs with no preprocessor node (comfyui_sd)
|
||||||
|
from PIL import ImageChops, ImageFilter, ImageOps
|
||||||
|
edges = ImageOps.autocontrast(im.convert('L').filter(ImageFilter.FIND_EDGES))
|
||||||
|
ImageChops.multiply(edges, alpha).convert('RGB').save(tmp_in)
|
||||||
|
else:
|
||||||
flat = Image.new('RGB', im.size, (128, 128, 128))
|
flat = Image.new('RGB', im.size, (128, 128, 128))
|
||||||
flat.paste(im, (0, 0), alpha)
|
flat.paste(im, (0, 0), alpha)
|
||||||
tmp_in = os.path.join(tmp_dir, 'mb_in.png')
|
|
||||||
flat.save(tmp_in)
|
flat.save(tmp_in)
|
||||||
jid = req('/api/jobs', data=json.dumps(
|
jid = req('/api/jobs', data=json.dumps(
|
||||||
{'operator': operator, 'asset_id': upload(tmp_in), 'params': params}).encode(),
|
{'operator': operator, 'asset_id': upload(tmp_in), 'params': params}).encode(),
|
||||||
@ -140,6 +147,8 @@ def main():
|
|||||||
ap.add_argument('--operator', default='mflux_image_edit')
|
ap.add_argument('--operator', default='mflux_image_edit')
|
||||||
ap.add_argument('--prompt', default='')
|
ap.add_argument('--prompt', default='')
|
||||||
ap.add_argument('--op-params', default='{}', help='extra operator params as JSON')
|
ap.add_argument('--op-params', default='{}', help='extra operator params as JSON')
|
||||||
|
ap.add_argument('--control', default='flat', choices=['flat', 'edge'],
|
||||||
|
help='what to upload as the job asset: flattened frame, or an edge map (controlnet)')
|
||||||
ap.add_argument('--moves', default='', help='comma list; default = all moves')
|
ap.add_argument('--moves', default='', help='comma list; default = all moves')
|
||||||
ap.add_argument('--limit', type=int, default=0, help='max frames this run (0 = all)')
|
ap.add_argument('--limit', type=int, default=0, help='max frames this run (0 = all)')
|
||||||
ap.add_argument('--hb', action='store_true', help='heartbeat to ~/.jobs/foitin-restyle.hb')
|
ap.add_argument('--hb', action='store_true', help='heartbeat to ~/.jobs/foitin-restyle.hb')
|
||||||
@ -176,7 +185,7 @@ def main():
|
|||||||
if a.engine == 'pillow-xray':
|
if a.engine == 'pillow-xray':
|
||||||
ok = pillow_xray(Image, src, out_png)
|
ok = pillow_xray(Image, src, out_png)
|
||||||
else:
|
else:
|
||||||
ok = farm_edit(Image, src, out_png, a.operator, dict(params), tmp_dir)
|
ok = farm_edit(Image, src, out_png, a.operator, dict(params), tmp_dir, a.control)
|
||||||
done += ok
|
done += ok
|
||||||
failed += (not ok)
|
failed += (not ok)
|
||||||
if not ok:
|
if not ok:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user