in backend-apis/app/routers/p2_content_creator.py [0:0]
def image_edit(data: EditImageRequest) -> GenerateOrEditImageResponse:
"""
# Image editing with Imagen
## Request body [EditImageRequest]:
**prompt**: *string*
- Prompt for editing the image
**base_image_name**: *string*
- Base image name to be collected from Google Cloud Storage /images
**mask_image_name**: *string* = ""
- Mask image name to be collected from Google Cloud Storage /images
**number_of_images**: *int* = 1
- Number of images to generate
**negative_prompt**: *string* = ""
- Negative prompt for editing the image
## Response body [GenerateOrEditImageResponse]:
**generated_images**: *list[GeneratedImage]*
## GeneratedImage:
**image_name**: *string*
- Name of the image in Cloud Storage
**image_size**: *tuple(int, int)*
- Size of the generated image
**images_parameters**: *dict*
- Parameters used to generate the image
## Raises
**HTTPException** - *404* - Image not found in Cloud Storage
**HTTPException** - *400* - Error editing image with Imagen
"""
try:
if not data.mask_image_name:
mask = None
else:
mask = Image(
image_bytes=utils_imagen.image_name_to_bytes(
data.mask_image_name
)
)
base_image = Image(
image_bytes=utils_imagen.image_name_to_bytes(data.base_image_name)
)
except NotFound as e:
raise HTTPException(
status_code=404,
detail="Image not found in Cloud Storage " + str(e),
) from e
try:
imagen_responses = utils_imagen.image_generate_model.edit_image(
prompt=data.prompt,
base_image=base_image,
mask=mask,
number_of_images=data.number_of_images,
negative_prompt=data.negative_prompt,
)
except GoogleAPICallError as e:
raise HTTPException(
status_code=400, detail="Error editing image with Imagen " + str(e)
) from e
generated_images = []
for image in imagen_responses:
image_name = utils_imagen.upload_image_to_storage(
image._image_bytes # pylint: disable=protected-access
)
generated_images.append(
GenerateOrEditImageResponse.GeneratedImage(
image_name=image_name,
image_size=image._size, # pylint: disable=protected-access
image_parameters=image.generation_parameters,
)
)
return GenerateOrEditImageResponse(generated_images=generated_images)