Resize and padding

Image size

Image can be upscaled and placed in any shape/canvas.

It is possible to set just one dimension, the other will be calculated automatically and image ratio will be preserved. Also padding parameter will be used in that case.

Notice that Deep Image supports AI upscale up to 4x of the original resolution. Everything above that will be upscaled traditionally with bicubic supersampling.

Let's check some resize examples.

This is the input image.

The destination image size can be controller with "width" and "height" parameters.

Image can be also upscaled with "print_size" and "dpi" parameters. More on that here in Image Processing / Print chapter.

Parameter nameDescription

width

  • string f.e. - "200%" - it will upscale image by factor 2.

  • integer f.e. - 200 - it will upscale/downscale image to have width 200 pixels. If the height is not given it will be calculated to match image ratio.

height

  • string f.e. - "200%" - it will upscale image by factor 2.

  • integer f.e. - 200 - it will upscale/downscale image to have height 200 pixels. If the width is not given it will be calculated to match image ratio.

min_length

integer f.e. - 200 - it will upscale/downscale image to have minimum 200 pixels width or height. That will also be applied to identified item/content when removing background.

{
    "url": "https://deep-image.ai/api-example.png",
    "width": 1000
}

x

curl --request POST \
     --url https://deep-image.ai/rest_api/process_result \
     --header 'content-type: application/json' \
     --header 'x-api-key: API_KEY' \
     --data '{
         "url": "https://deep-image.ai/api-example.png",
         "width": 1000
      }'

x

{
    "url": "https://deep-image.ai/api-example.png",
    "height": 1000
}
curl --request POST \
     --url https://deep-image.ai/rest_api/process_result \
     --header 'content-type: application/json' \
     --header 'x-api-key: API_KEY' \
     --data '{
         "url": "https://deep-image.ai/api-example.png",
         "height": 1000
      }'

If width and height is specified together, image with original ratio will be upscaled and placed inside "width x height" canvas. Fitting parameter will be used accordingly.

{
    "url": "https://deep-image.ai/api-example.png",
    "width": 1000,
    "height": 1000
}
curl --request POST \
     --url https://deep-image.ai/rest_api/process_result \
     --header 'content-type: application/json' \
     --header 'x-api-key: API_KEY' \
     --data '{
         "url": "https://deep-image.ai/api-example.png",
         "width": 1000,
         "height": 1000
      }'

Fitting and padding

According to specified width and height image can either cropped to fill given canvas or placed fully into the given canvas. When image is cropped checking the image content can be performed.

How the image is placed into destination canvas (with width and height parameters) is controlled by "fit" parameter.

NameDescription

canvas

(default) - whole image is placed into width x height canvas, missing space is filled with background color.

crop

Image is cropped to match destination width x height canvas. Crop is content aware by default. It can be changed to be on center as well.

bounds

image is upscaled to fit specified width x height.

cover

image is upscaled to fully cover specified width x height.

{
    "url": "https://deep-image.ai/api-example.png",
    "width": 1000,
    "height": 1000,
    "fit": "canvas"
}

Types of crop

Image cropping can be performed from the image center or from the center of identified content.

{
    "url": "https://deep-image.ai/api-example2.jpg",
    "width": 1000,
    "height": 1000,
    "fit": {
         "crop": "center"
    }
}

Crop "item" type is not particularly useful without padding and removing background. But it's very useful for "product" type manipulations. More on that at Remove background and item cropping.

Content aware cropping prevents objects being cut by the desired canvas proportions. Let's see some examples.

{
    "width": 1000,
    "height": 1000,
    "fit": "crop"
}

When margin is needed, parameter padding can be used for that. It can be specified either in pixels or in percentages.

{
    "url": "https://deep-image.ai/api-example.jpg",
    "width": 1000,
    "height": 1000,
    "fit": "canvas",
    "padding": "20%"
}

Last updated