@@ -1299,6 +1299,10 @@ async def generate_images(request: ImageGenerationRequest, raw_request: Request)
12991299 size_str = f"{ width } x{ height } "
13001300 else :
13011301 size_str = "model default"
1302+
1303+ app_state_args = getattr (raw_request .app .state , "args" , None )
1304+ _check_max_generated_image_size (app_state_args , width , height )
1305+
13021306 _update_if_not_none (gen_params , "width" , width )
13031307 _update_if_not_none (gen_params , "height" , height )
13041308
@@ -1484,7 +1488,6 @@ async def edit_images(
14841488 )
14851489
14861490 # 3.3 Parse and add size if provided
1487- max_generated_image_size = getattr (app_state_args , "max_generated_image_size" , None )
14881491 width , height = None , None
14891492 if size .lower () == "auto" :
14901493 if resolution is None :
@@ -1494,23 +1497,7 @@ async def edit_images(
14941497 else :
14951498 width , height = parse_size (size )
14961499
1497- # Check max_generated_image_size
1498- if max_generated_image_size is not None :
1499- if width is not None and height is not None :
1500- if width * height > max_generated_image_size :
1501- raise HTTPException (
1502- status_code = HTTPStatus .BAD_REQUEST .value ,
1503- detail = f"Requested image size { width } x{ height } exceeds the maximum allowed "
1504- f"size of { max_generated_image_size } pixels." ,
1505- )
1506- elif resolution is not None :
1507- # When resolution is set, the output size is resolution * resolution
1508- if resolution * resolution > max_generated_image_size :
1509- raise HTTPException (
1510- status_code = HTTPStatus .BAD_REQUEST .value ,
1511- detail = f"Requested resolution { resolution } (max { resolution } x{ resolution } pixels) "
1512- f"exceeds the maximum allowed size of { max_generated_image_size } pixels." ,
1513- )
1500+ _check_max_generated_image_size (app_state_args , width , height , resolution )
15141501
15151502 size_str = f"{ width } x{ height } " if width is not None and height is not None else "auto"
15161503 _update_if_not_none (gen_params , "width" , width )
@@ -1709,6 +1696,34 @@ async def _generate_with_async_omni(
17091696 return result
17101697
17111698
1699+ def _check_max_generated_image_size (
1700+ app_state_args : Any ,
1701+ width : int | None ,
1702+ height : int | None ,
1703+ resolution : int | None = None ,
1704+ ) -> None :
1705+ """Raise 400 if the requested image size exceeds --max-generated-image-size."""
1706+ max_generated_image_size = getattr (app_state_args , "max_generated_image_size" , None )
1707+ # Check max_generated_image_size
1708+ if max_generated_image_size is None :
1709+ return
1710+ if width is not None and height is not None :
1711+ if width * height > max_generated_image_size :
1712+ raise HTTPException (
1713+ status_code = HTTPStatus .BAD_REQUEST .value ,
1714+ detail = f"Requested image size { width } x{ height } exceeds the maximum allowed "
1715+ f"size of { max_generated_image_size } pixels." ,
1716+ )
1717+ elif resolution is not None :
1718+ # When resolution is set, the output size is resolution * resolution
1719+ if resolution * resolution > max_generated_image_size :
1720+ raise HTTPException (
1721+ status_code = HTTPStatus .BAD_REQUEST .value ,
1722+ detail = f"Requested resolution { resolution } (max { resolution } x{ resolution } pixels) "
1723+ f"exceeds the maximum allowed size of { max_generated_image_size } pixels." ,
1724+ )
1725+
1726+
17121727def _update_if_not_none (object : Any , key : str , val : Any ) -> None :
17131728 if val is not None :
17141729 setattr (object , key , val )
0 commit comments