Resize Image
curl --request POST \
--url https://api.img-processing.com/v1/images/{image_id}/resize \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"width": 300,
"height": 200,
"name": "resized-image",
"letterbox_color": "transparent",
"position": "center",
"fit": "contain"
}
'import requests
url = "https://api.img-processing.com/v1/images/{image_id}/resize"
payload = {
"width": 300,
"height": 200,
"name": "resized-image",
"letterbox_color": "transparent",
"position": "center",
"fit": "contain"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
width: 300,
height: 200,
name: 'resized-image',
letterbox_color: 'transparent',
position: 'center',
fit: 'contain'
})
};
fetch('https://api.img-processing.com/v1/images/{image_id}/resize', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.img-processing.com/v1/images/{image_id}/resize",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'width' => 300,
'height' => 200,
'name' => 'resized-image',
'letterbox_color' => 'transparent',
'position' => 'center',
'fit' => 'contain'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.img-processing.com/v1/images/{image_id}/resize"
payload := strings.NewReader("{\n \"width\": 300,\n \"height\": 200,\n \"name\": \"resized-image\",\n \"letterbox_color\": \"transparent\",\n \"position\": \"center\",\n \"fit\": \"contain\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.img-processing.com/v1/images/{image_id}/resize")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"width\": 300,\n \"height\": 200,\n \"name\": \"resized-image\",\n \"letterbox_color\": \"transparent\",\n \"position\": \"center\",\n \"fit\": \"contain\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.img-processing.com/v1/images/{image_id}/resize")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"width\": 300,\n \"height\": 200,\n \"name\": \"resized-image\",\n \"letterbox_color\": \"transparent\",\n \"position\": \"center\",\n \"fit\": \"contain\"\n}"
response = http.request(request)
puts response.read_body{
"id": "image_etm0g3x5iap4cld1qcfsjvo2",
"name": "Processed Image",
"url": "https://storage.img-processing.com/images/image_etm0g3x5iap4cld1qcfsjvo2",
"width": 460,
"height": 460,
"format": "jpeg",
"size": 282000,
"created_at": "2021-09-01T12:00:00.000Z"
}{
"type": "https://docs.img-processing.com/errors/unauthorized",
"error": "Unauthorized",
"status": 401,
"message": "API key is required."
}{
"type": "https://docs.img-processing.com/errors/forbidden",
"error": "Forbidden",
"status": 403,
"message": "You are not allowed to access this image."
}{
"type": "https://docs.img-processing.com/errors/validation-error",
"error": "Validation Error",
"status": 422,
"errors": [
"{field or param} {error message}"
]
}{
"type": "https://docs.img-processing.com/errors/too-many-requests",
"error": "Too Many Requests",
"status": 429,
"message": "Rate limit exceeded. Try again later."
}{
"type": "https://docs.img-processing.com/errors/internal-error",
"error": "Internal Error",
"status": 500,
"message": "An unexpected error occurred. Please try again later. If the problem persists, contact support."
}Transformation Endpoints
Resize Image
Creates a new image by resizing an existing image
POST
/
v1
/
images
/
{image_id}
/
resize
Resize Image
curl --request POST \
--url https://api.img-processing.com/v1/images/{image_id}/resize \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"width": 300,
"height": 200,
"name": "resized-image",
"letterbox_color": "transparent",
"position": "center",
"fit": "contain"
}
'import requests
url = "https://api.img-processing.com/v1/images/{image_id}/resize"
payload = {
"width": 300,
"height": 200,
"name": "resized-image",
"letterbox_color": "transparent",
"position": "center",
"fit": "contain"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
width: 300,
height: 200,
name: 'resized-image',
letterbox_color: 'transparent',
position: 'center',
fit: 'contain'
})
};
fetch('https://api.img-processing.com/v1/images/{image_id}/resize', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.img-processing.com/v1/images/{image_id}/resize",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'width' => 300,
'height' => 200,
'name' => 'resized-image',
'letterbox_color' => 'transparent',
'position' => 'center',
'fit' => 'contain'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.img-processing.com/v1/images/{image_id}/resize"
payload := strings.NewReader("{\n \"width\": 300,\n \"height\": 200,\n \"name\": \"resized-image\",\n \"letterbox_color\": \"transparent\",\n \"position\": \"center\",\n \"fit\": \"contain\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.img-processing.com/v1/images/{image_id}/resize")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"width\": 300,\n \"height\": 200,\n \"name\": \"resized-image\",\n \"letterbox_color\": \"transparent\",\n \"position\": \"center\",\n \"fit\": \"contain\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.img-processing.com/v1/images/{image_id}/resize")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"width\": 300,\n \"height\": 200,\n \"name\": \"resized-image\",\n \"letterbox_color\": \"transparent\",\n \"position\": \"center\",\n \"fit\": \"contain\"\n}"
response = http.request(request)
puts response.read_body{
"id": "image_etm0g3x5iap4cld1qcfsjvo2",
"name": "Processed Image",
"url": "https://storage.img-processing.com/images/image_etm0g3x5iap4cld1qcfsjvo2",
"width": 460,
"height": 460,
"format": "jpeg",
"size": 282000,
"created_at": "2021-09-01T12:00:00.000Z"
}{
"type": "https://docs.img-processing.com/errors/unauthorized",
"error": "Unauthorized",
"status": 401,
"message": "API key is required."
}{
"type": "https://docs.img-processing.com/errors/forbidden",
"error": "Forbidden",
"status": 403,
"message": "You are not allowed to access this image."
}{
"type": "https://docs.img-processing.com/errors/validation-error",
"error": "Validation Error",
"status": 422,
"errors": [
"{field or param} {error message}"
]
}{
"type": "https://docs.img-processing.com/errors/too-many-requests",
"error": "Too Many Requests",
"status": 429,
"message": "Rate limit exceeded. Try again later."
}{
"type": "https://docs.img-processing.com/errors/internal-error",
"error": "Internal Error",
"status": 500,
"message": "An unexpected error occurred. Please try again later. If the problem persists, contact support."
}Guide
Learn how to resize an image
Description
This endpoint creates a new image by resizing an existing image. At the moment, there are three fit modes available:
Available fit modes
fill: The image is resized to fill the specified dimensions, stretching/squishing the image to fit the provided dimensions. This is the default fit mode.contain: The image is resized to fit within the specified dimensions, maintaining the aspect ratio, and adding a letterbox if necessary.cover: The image is resized to cover the specified dimensions, maintaining the aspect ratio, cropping/clipping the image if necessary.
contain fit mode, and
the gravity for cropping or positioning the image when using the cover and contain fit modes.
The next image shows the available gravity modes with a white letterbox_color and a contain fit mode:

Available gravity modes with a white letterbox_color and a contain fit mode
Path Parameters
Body
application/json
Response
The API will return the Image object in the response body.
The Image object represents an image processed using the IMG Processing API. The object contains information about the image, such as its URL, size, and format. The Image object is returned in the response body of all image processing requests.

