editImage method

  1. @override
Future<ImageGenerationResponse> editImage(
  1. ImageEditRequest request
)
override

Edit an existing image based on a prompt

Creates an edited or extended image given an original image and a prompt. The original image must have transparent areas that indicate where to edit.

Implementation

@override
Future<ImageGenerationResponse> editImage(ImageEditRequest request) async {
  // Prepare multipart form data for image editing
  final formData = <String, dynamic>{
    'prompt': request.prompt,
    if (request.model != null) 'model': request.model,
    if (request.count != null) 'n': request.count,
    if (request.size != null) 'size': request.size,
    if (request.responseFormat != null)
      'response_format': request.responseFormat,
    if (request.user != null) 'user': request.user,
  };

  // Add image data
  if (request.image.data != null) {
    formData['image'] = request.image.data!;
  } else {
    throw const InvalidRequestError(
      'Image data is required for image editing',
    );
  }

  // Add mask data if provided
  if (request.mask != null) {
    if (request.mask!.data != null) {
      formData['mask'] = request.mask!.data!;
    }
    // Note: filePath support removed for Web platform compatibility
  }

  final responseData = await _postMultipartForm('images/edits', formData);
  return _parseImageResponse(responseData, request.model);
}