Inpainting SDXL
Inpainting in Stable Diffusion is a powerful feature that allows you to restore missing parts of an image while maintaining the overall aesthetic and consistency of the original image. It utilizes the model's ability to understand and generate photorealistic content to blend in new elements and fill in gaps, making it an invaluable tool for image restoration and creative expression.
To perform inpainting in Stable Diffusion, you'll need to provide an initial image along with a mask that outlines the areas you want to inpaint. The mask can be created manually using image editing software like MS Paint. Once the mask is ready, you can provide text prompts that describe the desired content for the inpainted regions. Stable Diffusion will then analyze the image, mask, and prompt to generate new content that seamlessly blends into the existing image.
- Python
- JavaScript
- php
import requests
import json
url = "https://api.imagepipeline.io/sdxl/inpainting/v1"
headers = {
"API-Key": "Your API Key"
}
data = {
"model_id": "sdxl",
"mask_image": "https://docs.imagepipeline.io/img/sdxl_maskimg.png",
"init_image": "https://docs.imagepipeline.io/img/sdxl_img2img.png",
"prompt": "The woman is holding flowers, royalty, fantasy art, 8k quality",
"negative_prompt": "error, cropped, worst quality, low quality, duplicate, blurry, (unfinished objects), stock image, artifacts, ((fused fingers)), bad hands, (((too many fingers))), (((deformed hands))), disproportional hands",
"num_inference_steps": 20,
"refiner": false,
"samples": 1,
"guidance_scale": 10,
"width": 768,
"height": 768,
"seed": 12345,
"safety_checker": true
}
response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json())
const url = "https://api.imagepipeline.io/sdxl/inpainting/v1";
const headers = {
"API-Key": "Your API Key",
"Content-Type": "application/json"
};
const data = {
"model_id": "sdxl",
"mask_image": "https://docs.imagepipeline.io/img/sdxl_maskimg.png",
"init_image": "https://docs.imagepipeline.io/img/sdxl_img2img.png",
"prompt": "The woman is holding flowers, royalty, fantasy art, 8k quality",
"negative_prompt": "error, cropped, worst quality, low quality, duplicate, blurry, (unfinished objects), stock image, artifacts, ((fused fingers)), bad hands, (((too many fingers))), (((deformed hands))), disproportional hands",
"num_inference_steps": 20,
"refiner": false,
"samples": 1,
"guidance_scale": 10,
"width": 768,
"height": 768,
"seed": 12345,
"safety_checker": true
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch((error) => console.error('Error:', error));
<?php
$url = "https://api.imagepipeline.io/sdxl/inpainting/v1";
$headers = array(
"API-Key: Your-API-Key",
"Content-Type: application/json"
);
$data = array(
"model_id"=> "sdxl",
"mask_image"=> "https://docs.imagepipeline.io/img/sdxl_maskimg.png",
"init_image"=> "https://docs.imagepipeline.io/img/sdxl_img2img.png",
"prompt"=> "The woman is holding flowers, royalty, fantasy art, 8k quality",
"negative_prompt"=> "error, cropped, worst quality, low quality, duplicate, blurry, (unfinished objects), stock image, artifacts, ((fused fingers)), bad hands, (((too many fingers))), (((deformed hands))), disproportional hands",
"num_inference_steps": 20,
"refiner"=> false,
"samples"=> 1,
"guidance_scale"=> 10,
"width"=> 768,
"height"=> 768
"seed" => 12345,
"safety_checker" => true
);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
$response = curl_exec($ch);
if($response === FALSE){
die(curl_error($ch));
}
$responseData = json_decode($response, TRUE);
curl_close($ch);
var_dump($responseData);
?>
JSON Parameters
Parameter | Permissible values | Notes |
---|---|---|
model_id | str | model_id can be found in models page. Filter by SDXL models |
prompt | str, 75 tokens | Check our Prompt Guide for tips |
negative_prompt | str, 75 tokens | Check our Prompt Guide for tips |
num_inference_steps | int, [1-100] | Noise is removed with each step, resulting in a higher-quality image over time. Ideal value 20-30 |
strength | float, [0-1] | Optional denoise strength |
samples | int, [1-4] | Generates a maximum of 4 samples per API call |
guidance_scale | float, [1-20] | Higher guidance scale prioritizes text prompt relevance but sacrifices image quality. Ideal value 7.5-12.5 |
width | int | Width in pixels. Higher than or equal to 512 for best results |
height | int | Height in pixels. Higher than or equal to 512 for best results |
init_image | str | Add a publicly available link to the original image |
mask_image | str | Add a publicly available link to the image with the masked portion |
seed | int | Controlling the seed can help you generate reproducible images |
safety_checker | boolean | Checks for NSFW images and filters explicit images |
Status
Your response will include a status
.
- If the
status
=SUCCESS
, you will also havedownload_urls
that will have the links to your generated image based on the number of samples you have entered. The maximum number of samples that can be generated is 4. - If the
status
=PENDING
, you will receive aid
. You can use the status endpoint to fetch your image using theid
. - If the
status
=FAILURE
, you will receive only an error message.
Endpoint:
https://api.imagepipeline.io/sdxl/inpainting/v1/status/{{id}}
Pass the API-Key as the authorization in the header.