@@ -280,8 +280,9 @@ def __call__(
280280 eligen_entity_prompts : list [str ] = None ,
281281 eligen_entity_masks : list [Image .Image ] = None ,
282282 eligen_enable_on_negative : bool = False ,
283- # Edit Image
283+ # Qwen- Image-Edit
284284 edit_image : Image .Image = None ,
285+ edit_image_auto_resize : bool = True ,
285286 edit_rope_interpolation : bool = False ,
286287 # FP8
287288 enable_fp8_attention : bool = False ,
@@ -313,7 +314,7 @@ def __call__(
313314 "blockwise_controlnet_inputs" : blockwise_controlnet_inputs ,
314315 "tiled" : tiled , "tile_size" : tile_size , "tile_stride" : tile_stride ,
315316 "eligen_entity_prompts" : eligen_entity_prompts , "eligen_entity_masks" : eligen_entity_masks , "eligen_enable_on_negative" : eligen_enable_on_negative ,
316- "edit_image" : edit_image , "edit_rope_interpolation" : edit_rope_interpolation ,
317+ "edit_image" : edit_image , "edit_image_auto_resize" : edit_image_auto_resize , " edit_rope_interpolation" : edit_rope_interpolation ,
317318 }
318319 for unit in self .units :
319320 inputs_shared , inputs_posi , inputs_nega = self .unit_runner (unit , self , inputs_shared , inputs_posi , inputs_nega )
@@ -586,17 +587,33 @@ def process(self, pipe: QwenImagePipeline, blockwise_controlnet_inputs: list[Con
586587class QwenImageUnit_EditImageEmbedder (PipelineUnit ):
587588 def __init__ (self ):
588589 super ().__init__ (
589- input_params = ("edit_image" , "tiled" , "tile_size" , "tile_stride" ),
590+ input_params = ("edit_image" , "tiled" , "tile_size" , "tile_stride" , "edit_image_auto_resize" ),
590591 onload_model_names = ("vae" ,)
591592 )
592593
593- def process (self , pipe : QwenImagePipeline , edit_image , tiled , tile_size , tile_stride ):
594+
595+ def calculate_dimensions (self , target_area , ratio ):
596+ import math
597+ width = math .sqrt (target_area * ratio )
598+ height = width / ratio
599+ width = round (width / 32 ) * 32
600+ height = round (height / 32 ) * 32
601+ return width , height
602+
603+
604+ def edit_image_auto_resize (self , edit_image ):
605+ calculated_width , calculated_height = self .calculate_dimensions (1024 * 1024 , edit_image .size [0 ] / edit_image .size [1 ])
606+ return edit_image .resize ((calculated_width , calculated_height ))
607+
608+
609+ def process (self , pipe : QwenImagePipeline , edit_image , tiled , tile_size , tile_stride , edit_image_auto_resize = False ):
594610 if edit_image is None :
595611 return {}
612+ resized_edit_image = self .edit_image_auto_resize (edit_image ) if edit_image_auto_resize else edit_image
596613 pipe .load_models_to_device (['vae' ])
597- edit_image = pipe .preprocess_image (edit_image ).to (device = pipe .device , dtype = pipe .torch_dtype )
614+ edit_image = pipe .preprocess_image (resized_edit_image ).to (device = pipe .device , dtype = pipe .torch_dtype )
598615 edit_latents = pipe .vae .encode (edit_image , tiled = tiled , tile_size = tile_size , tile_stride = tile_stride )
599- return {"edit_latents" : edit_latents }
616+ return {"edit_latents" : edit_latents , "edit_image" : resized_edit_image }
600617
601618
602619def model_fn_qwen_image (
0 commit comments