Photo Color Correction
Take an amazing photo, and it turns out that the colors are not the same as you remembered. Use the AI color correction tool to balance the colors in the image, which means removing color casts from the image or bringing out colors for more clarity and vitality.
API Mode 1 : Return binary stream
Sample Code
curl -H 'APIKEY: INSERT_YOUR_API_KEY_HERE' \
-F 'file=@/path/to/file.jpg' \
-f 'https://www.cutout.pro/api/v1/matting?mattingType=4' \
-o out.png
import requests
response = requests.post(
'https://www.cutout.pro/api/v1/matting?mattingType=4',
files={'file': open('/path/to/file.jpg', 'rb')},
headers={'APIKEY': 'INSERT_YOUR_API_KEY_HERE'},
)
with open('out.png', 'wb') as out:
out.write(response.content)
$client = new GuzzleHttp\Client();
$res = $client->post('https://www.cutout.pro/api/v1/matting?mattingType=4', [
'multipart' => [
[
'name' => 'file',
'contents' => fopen('/path/to/file.jpg', 'r')
]
],
'headers' => [
'APIKEY' => 'INSERT_YOUR_API_KEY_HERE'
]
]);
$fp = fopen("out.png", "wb");
fwrite($fp, $res->getBody());
fclose($fp);
File file = new File("/Your/Image/File/Path");
CloseableHttpClient client = HttpClients.createDefault();
HttpPost httpPost = new HttpPost("https://www.cutout.pro/api/v1/matting?mattingType=4");
httpPost.setHeader("APIKEY", "INSERT_YOUR_API_KEY_HERE");
MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
multipartEntityBuilder.addBinaryBody("file", file);
httpPost.setEntity(multipartEntityBuilder.build());
try (CloseableHttpResponse response = client.execute(httpPost)){
if (response.getStatusLine().getStatusCode() == HttpStatusCode.OK) {
//save to local storage
byte[] bytes = EntityUtils.toByteArray(response.getEntity());
FileOutputStream outputStream = new FileOutputStream("/Image/File/Path");
outputStream.write(bytes);
}
} catch (IOException e) {
e.printStackTrace();
}
var request = require('request');
var fs = require('fs');
request.post({
url: 'https://www.cutout.pro/api/v1/matting?mattingType=4',
formData: {
file: fs.createReadStream('/path/to/file.jpg')
},
headers: {
'APIKEY': 'INSERT_YOUR_API_KEY_HERE'
},
encoding: null
}, function(error, response, body) {
// console.log(response);
});
using (var client = new HttpClient())
using (var formData = new MultipartFormDataContent())
{
formData.Headers.Add("APIKEY", "INSERT_YOUR_API_KEY_HERE");
formData.Add(new ByteArrayContent(File.ReadAllBytes("/path/to/file.jpg")), "file", "file.jpg");
var response = client.PostAsync("https://www.cutout.pro/api/v1/matting?mattingType=4", formData).Result;
if(response.IsSuccessStatusCode) {
//todo: Handle your logic
} else {
//todo: Handle your logic
}
}
NSURL *fileUrl = [NSBundle.mainBundle URLForResource:@"file" withExtension:@"jpg"];
NSData *data = [NSData dataWithContentsOfURL:fileUrl];
if (!data) {
return;
}
AFHTTPSessionManager *manager =
[[AFHTTPSessionManager alloc] initWithSessionConfiguration:
NSURLSessionConfiguration.defaultSessionConfiguration];
manager.responseSerializer = [AFImageResponseSerializer serializer];
[manager.requestSerializer setValue:@"INSERT_YOUR_API_KEY_HERE"
forHTTPHeaderField:@"APIKEY"];
NSURLSessionDataTask *dataTask = [manager
POST:@"https://www.cutout.pro/api/v1/matting?mattingType=4"
parameters:nil
constructingBodyWithBlock:^(id _Nonnull formData) {
[formData appendPartWithFileData:data
name:@"file"
fileName:@"file.jpg"
mimeType:@"image/jpeg"];
}
progress:nil
success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
// Handle your logic
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
// Handle your logic
}];
[dataTask resume];
API documentation
User requests to do color correction from a picture, and the server returns the result image in binary format.
Request description
-
Request URL: https://www.cutout.pro/api/v1/matting?mattingType=4
-
Request method: POST
-
Return type: PNG image
-
Content-Type: multipart/form-data
Input parameters:
(1) Request parameters (Header)
Parameter | Parameter Type | Description |
---|---|---|
APIKEY | string | Your API Key |
(2) Request parameters (Body)
Parameter | Description | Required |
---|---|---|
file | Picture file | Yes |
(3) Request parameters (query string)
Parameter | Description | Required |
---|---|---|
preview | When this parameter is passed in preview image processing, the maximum preview image resolution received is: 500 * 500. If the maximum preview resolution is exceeded, the image will be adjusted to 500 * 500 resolution, and the number of credits deducted from each image is: 0.25, (If this parameter is not passed or the value is false, the number of credits deducted for each image is: 1), the value type: true or false, the default value is: false | No |
outputFormat | The output image format, which can be: png, webp, jpg_$quality($quality is the quality used to compress the image, the value is between 0 and 100, for example: jpg_75) the default value is: png | No |
Response description
- Normal return
Return an image, in binary format and the content-type is image/png.
- Error return
if any error occurs, the response will be in json format.
{
"code": 1001, //
"data": null
"msg": 'Insufficient balance',
"time": 1590462453264
}
API Mode 2: Return base64 encoded string
Sample Code
curl -H 'APIKEY: INSERT_YOUR_API_KEY_HERE' \
-F 'file=@/path/to/file.jpg' \
-f 'https://www.cutout.pro/api/v1/matting2?mattingType=4&crop=true' \
-o out.png
import requests
response = requests.post(
'https://www.cutout.pro/api/v1/matting2?mattingType=4',
files={'file': open('/path/to/file.jpg', 'rb')},
headers={'APIKEY': 'INSERT_YOUR_API_KEY_HERE'},
)
$client = new GuzzleHttp\Client();
$res = $client->post('https://www.cutout.pro/api/v1/matting?mattingType=4', [
'multipart' => [
[
'name' => 'file',
'contents' => fopen('/path/to/file.jpg', 'r')
]
],
'headers' => [
'APIKEY' => 'INSERT_YOUR_API_KEY_HERE'
]
]);
File file = new File("/Your/Image/File/Path");
CloseableHttpClient client = HttpClients.createDefault();
HttpPost httpPost = new HttpPost("https://www.cutout.pro/api/v1/matting2?mattingType=4");
httpPost.setHeader("APIKEY", "INSERT_YOUR_API_KEY_HERE");
MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
multipartEntityBuilder.addBinaryBody("file", file);
httpPost.setEntity(multipartEntityBuilder.build());
CloseableHttpResponse response = client.execute(httpPost);
var request = require('request');
var fs = require('fs');
request.post({
url: 'https://www.cutout.pro/api/v1/matting2?mattingType=4',
formData: {
file: fs.createReadStream('/path/to/file.jpg')
},
headers: {
'APIKEY': 'INSERT_YOUR_API_KEY_HERE'
},
encoding: null
}, function(error, response, body) {
// console.log(response);
});
using (var client = new HttpClient())
using (var formData = new MultipartFormDataContent())
{
formData.Headers.Add("APIKEY", "INSERT_YOUR_API_KEY_HERE");
formData.Add(new ByteArrayContent(File.ReadAllBytes("/path/to/file.jpg")), "file", "file.jpg");
var response = client.PostAsync("https://www.cutout.pro/api/v1/matting2?mattingType=4", formData).Result;
if(response.IsSuccessStatusCode) {
//todo: Handle your logic
} else {
//todo: Handle your logic
}
}
NSURL *fileUrl = [NSBundle.mainBundle URLForResource:@"file" withExtension:@"jpg"];
NSData *data = [NSData dataWithContentsOfURL:fileUrl];
if (!data) {
return;
}
AFHTTPSessionManager *manager =
[[AFHTTPSessionManager alloc] initWithSessionConfiguration:
NSURLSessionConfiguration.defaultSessionConfiguration];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager.requestSerializer setValue:@"INSERT_YOUR_API_KEY_HERE"
forHTTPHeaderField:@"APIKEY"];
NSURLSessionDataTask *dataTask = [manager
POST:@"https://www.cutout.pro/api/v1/matting2?mattingType=4"
parameters:nil
constructingBodyWithBlock:^(id _Nonnull formData) {
[formData appendPartWithFileData:data
name:@"file"
fileName:@"file.jpg"
mimeType:@"image/jpeg"];
}
progress:nil
success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
// Handle your logic
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
// Handle your logic
}];
[dataTask resume];
API documentation
User requests to do color correction from a picture, and the server returns the result in json format.
Request description
-
Request URL: https://www.cutout.pro/api/v1/matting?mattingType=4
-
Request method: POST
-
Return type: PNG image
-
Content-Type: multipart/form-data
Input parameters:
(1) Request parameters (Header)
Parameter | Parameter Type | Description |
---|---|---|
APIKEY | string | Your API Key |
(2) Request parameters (Body)
Parameter | Description | Required |
---|---|---|
file | Picture file | Yes |
(3) Request parameters (query string)
Parameter | Description | Required |
---|---|---|
preview | When this parameter is passed in preview image processing, the maximum preview image resolution received is: 500 * 500. If the maximum preview resolution is exceeded, the image will be adjusted to 500 * 500 resolution, and the number of credits deducted from each image is: 0.25, (If this parameter is not passed or the value is false, the number of credits deducted for each image is: 1), the value type: true or false, the default value is: false | No |
outputFormat | The output image format, which can be: png, webp, jpg_$quality($quality is the quality used to compress the image, the value is between 0 and 100, for example: jpg_75) the default value is: png | No |
Response description
- Normal return
{
"code": 0,
"data": {
"imageBase: "iVBORw0KGgo..." //base64 encoded string of the image with background removed
},
"msg": null,
"time": 1590462453264
}
- Error return
if any error occurs, the response will be in json format.
{
"code": 1001, //
"data": null
"msg": 'Insufficient balance',
"time": 1590462453264
}
API Mode 3: Return base64 encoded via image URL
Sample Code
curl -X GET --header 'Accept: application/json' \
--header 'APIKEY: INSERT_YOUR_API_KEY_HERE' \
'https://www.cutout.pro/api/v1/mattingByUrl?url=https%3A%2F%2Fcutout.s3.amazonaws.com%2Fcutout-nuxt%2Fbrighten%2F2-large.jpeg&mattingType=4'
API documentation
User requests to do color correction from a picture, and the server returns the result in json format.
Request description
-
Request URL: https://www.cutout.pro/api/v1/mattingByUrl?mattingType=4
-
Request method: GET
-
Content-Type: multipart/form-data
Input parameters:
(1) Request parameters (Header)
Parameter | Parameter Type | Description |
---|---|---|
APIKEY | string | Your API Key |
(2) Request parameters (query string)
Parameter | Description | Required |
---|---|---|
url | The URL of the source picture | Yes |
preview | When this parameter is passed in preview image processing, the maximum preview image resolution received is: 500 * 500. If the maximum preview resolution is exceeded, the image will be adjusted to 500 * 500 resolution, and the number of credits deducted from each image is: 0.25, (If this parameter is not passed or the value is false, the number of credits deducted for each image is: 1), the value type: true or false, the default value is: false | No |
outputFormat | The output image format, which can be: png, webp, jpg_$quality($quality is the quality used to compress the image, the value is between 0 and 100, for example: jpg_75) the default value is: png | No |
Response description
- Normal return
{
"code": 0,
"data": {
"imageBase: "iVBORw0KGgo..." //base64 encoded string of the image with background removed
},
"msg": null,
"time": 1590462453264
}
- Error return
if any error occurs, the response will be in json format.
{
"code": 1001, //
"data": null
"msg": 'Insufficient balance',
"time": 1590462453264
}
Frequently asked questions
- Q: What are the requirements for the input image format?
- A: Support PNG, JPG, JPEG, BMP, WEBP
- Q: Is there a limit to the supported image size?
- A: The maximum resolution uploaded at present is 4096x4096 pixels, and the image file size is less than 15MB
- Q: Request QPS limit?
- A: Supports 5 simultaneous requests per second