API Endpoint Access URL
https://api.pixlab.io/motionblur
Get Your API Key & Try MOTIONBLUR Now ↗Description
Simulates motion blur by convolving the image with a Gaussian operator. Customize the radius, sigma, and angle for realistic blurring effects. Available in Prod Plan and higher. Simulates motion blur. The image is convolved with a Gaussian operator of the given radius and standard deviation (sigma). For reasonable results, radius should be larger than sigma. The angle parameter gives the angle of the blurring motion. This endpoint is available starting from the Prod Plan and up.
HTTP Methods
GET, POST
HTTP Parameters
Required
Fields | Type | Description |
---|---|---|
img |
URL | Input image URL. If you want to upload your image directly from your app, then submit a multipart/form-data POST request. |
radius |
Float | Blur radius (Max value is set to 100.00). |
sigma |
Float | Standard deviation (Max value is set to 200.00). |
angle |
Float | Apply the effect along this angle (Max value set to 360 degree). |
key |
String | Your PixLab API Key ↗. You can also embed your key in the WWW-Authenticate: HTTP header and omit this parameter if you want to. |
Optional
Fields | Type | Description |
---|---|---|
blob |
Boolean | By default, this API endpoint return a JSON Object holding the link to the image output. But, if this parameter is set to true then the image binary contents is returned instead. |
channel |
Integer | Color channel constant. If this field is missing (Recommended), then all image channels will be affected (See below for the list of channels constant). |
Allowed Content-Type:
multipart/form-data
application/json
Use
multipart/form-data
if you want to upload your image directly (refer to the REST API code samples or The PixLab Github Repository↗ for a working example). If you are using JSON, then your image must be already uploaded somewhere. Call store if you want to upload an image for example before invoking this endpoint.Channels Constant
We recommend that you always omit this parameter and let PixLab affect all image channels.
Fields | Value |
---|---|
CHANNEL_RED | 1 |
CHANNEL_GRAY | 1 |
CHANNEL_CYAN | 1 |
CHANNEL_GREEN | 2 |
CHANNEL_MAGENTA | 2 |
CHANNEL_BLUE | 4 |
CHANNEL_YELLOW | 4 |
CHANNEL_ALPHA | 8 |
CHANNEL_OPACITY | 8 |
CHANNEL_MATTE | 8 |
CHANNEL_BLACK | 32 |
CHANNEL_INDEX | 32 |
CHANNEL_ALL | 134217727 |
HTTP Response
Returns application/json
if the optional blob parameter is not set.
This endpoint returns a JSON response unless the blob parameter is specified, in which case it returns the raw image binary. The JSON response contains the following fields:
Fields | Type | Description |
---|---|---|
status |
Integer | Status code 200 indicates success, any other code indicates failure. |
link |
URL | Link to the processed image stored on pixlab.xyz storage. Custom S3 buckets can be configured via console.pixlab.io. |
id |
String | Unique identifier for the processed image. |
error |
String | Error details when status ≠ 200. |
Code Samples
import requests
def apply_motion_blur(image_url: str, radius: int, sigma: int, angle: int, api_key: str) -> str:
"""Apply motion blur effect to an image using PixLab API.
Args:
image_url: URL of the image to process
radius: Radius of the motion blur effect
sigma: Standard deviation of the Gaussian kernel
angle: Angle of the motion blur effect in degrees
api_key: PixLab API key
Returns:
URL of the processed image if successful, otherwise raises an exception
"""
params = {
'img': image_url,
'radius': radius,
'sigma': sigma,
'angle': angle,
'key': api_key
}
response = requests.get(
'https://api.pixlab.io/motionblur',
params=params,
timeout=10
)
response.raise_for_status()
data = response.json()
if data['status'] != 200:
raise ValueError(f"API Error: {data.get('error', 'Unknown error')}")
return data['link']
if __name__ == '__main__':
try:
blurred_image_url = apply_motion_blur(
image_url='http://www.drodd.com/images15/nature31.jpg',
radius=40,
sigma=31,
angle=45,
api_key='PIXLAB_API_KEY'
)
print(f"Link to the blurred picture: {blurred_image_url}")
except requests.exceptions.RequestException as e:
print(f"Request failed: {e}")
except ValueError as e:
print(f"Processing failed: {e}")
fetch('https://api.pixlab.io/motionblur?img=http://www.drodd.com/images15/nature31.jpg&radius=40&sigma=31&angle=45&key=PIXLAB_API_KEY')
.then(response => response.json())
.then(reply => {
if (reply.status !== 200) {
console.log(reply.error);
} else {
console.log("Link to the Blurred picture: " + reply.link);
}
})
.catch(error => console.error('Error:', error));
<?php
$params = [
'img' => 'http://www.drodd.com/images15/nature31.jpg',
'radius' => 40,
'sigma' => 31,
'angle' => 45,
'key' => 'PIXLAB_API_KEY'
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.pixlab.io/motionblur?' . http_build_query($params));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
curl_close($ch);
$reply = json_decode($response, true);
if ($reply['status'] != 200) {
echo $reply['error'];
} else {
echo "Link to the Blurred picture: " . $reply['link'];
}
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse('https://api.pixlab.io/motionblur')
params = {
'img' => 'http://www.drodd.com/images15/nature31.jpg',
'radius' => 40,
'sigma' => 31,
'angle' => 45,
'key' => 'PIXLAB_API_KEY'
}
uri.query = URI.encode_www_form(params)
response = Net::HTTP.get_response(uri)
reply = JSON.parse(response.body)
if reply['status'] != 200
puts reply['error']
else
puts "Link to the Blurred picture: #{reply['link']}"
end