Создание новой задачи для уникализации одного фото

Асинхронный метод. Создает задачу по уникализации и ставит ее в очередь. В ответе вам вернется ID задачи по которому вы сможете получить прямые ссылки на скачивание изображений (без архивов)

POST https://pixflow.ru/api/v1/task-create/single

HEADER Content-Type: multipart/form-data

HEADER Authorization: Bearer {ваш токен}

Параметр Описание
image
file
Изображение
copies_amount
int
Количество копий изображения
По умолчанию: 1
Максимальное значение: 500
image_names
int
Имена файлов
Возможные значения:
  • 1 - Исходные
  • 2 - По порядку
  • 3 - Случайные
prefix
string
Префикс добавляется к названию файлов и папок (зависит от настройки расположения файлов). Может содержать только буквы, цифры, пробелы и следующие символы: «_», «-», «.»
Например: «new_»
По умолчанию пустая строка (не используется)
converting_format
int
Конвертация
Возможные значения:
  • 0 - Без конвертации
  • 1 - jpg
exif_mode
int
Exif данные
Возможные значения:
  • 0 - Без изменений
  • 1 - Случайные
  • 2 - Схожие
  • 3 - Удалены
  • 4 - Свои

Важно! EXIF данные поддерживают только JPEG изображения

exif_template_id
int
ID EXIF шаблона из этого справочника
Нужно указывать только при значении параметра exif_mode = 4
По умолчанию: 0
rotate
json
Поворот изображения
Значения от 0 до 10
Наилучший результат: от 1 до 2 градусов
По умолчанию: {"enable": false, "from": 1, "to": 2}
resize
json
Ресайз изображения
Значения от 0 до 20
Наилучший результат: от 5 до 10
По умолчанию:
{"enable": true, "max_side": 2000, "mode": 1, "from": 5, "to": 10}
max_side может быть в интервале от 1000 до 5000
Возможные значения mode:
  • 1 - Случайно
  • 2 - Уменьшить изображение
  • 3 - Увеличить изображение
crop
json
Обрезка изображения
Значения от 0 до 49
Наилучший результат: от 1 до 3
По умолчанию: {"enable": false, "mode": 1, "from": 1, "to": 3}
Возможные значения mode:
  • 1 - Случайно
  • 2 - С одной случайной стороны
  • 3 - С двух случайных сторон
  • 4 - С трёх случайных сторон
  • 5 - Со всех сторон
sharpen
json
Резкость
Значения от 0 до 10
Наилучший результат: от 1 до 5
По умолчанию: {"enable": true, "from": 1, "to": 5}
brightness
json
Яркость
Значения от -100 до 100
Наилучший результат: от -5 до 5
По умолчанию: {"enable": true, "from": -5, "to": 5}
saturation
json
Насыщенность
Значения от -100 до 100
Наилучший результат: от -20 до 20
По умолчанию: {"enable": true, "from": -20, "to": 20}
hue
json
Оттенок
Значения от -100 до 100
Наилучший результат: от -5 до 5
По умолчанию: {"enable": false, "from": -5, "to": 5}
noise
json
Шум
По умолчанию: {"enable": true, "mode": 1, "intensity": 10}
Возможные значения параметра mode:
  • 1 - Случайно
  • 2 - Равномерный шум
  • 3 - Импульсный шум
  • 4 - Шум Гаусса
  • 5 - Шум Лапласа
Параметр intensity может принимать значения от 1 до 100
reflection_mode
int
Отражение
Возможные значения:
  • 0 - Без изменений
  • 1 - По горизонтали
  • 2 - По вертикали
  • 3 - И по горизонтали и по вертикали
auto_tune
int
Система будет автоматически корректировать некоторые настройки исходя из параметров изображения: размер, вес, формат, цвет и т.д. Благодаря этой настройке можно получить лучшее соотношение уникальности и качества
Возможные значения:
  • 0 - Отключена
  • 1 - Включена
auto_start
int
Автоматический запуск задачи сразу после создания. Если значение = 0, то задача не будет запущена автоматически и это позволит сначала запрость информацию о ней, включая стоимость, при помощи метода /tasks. Если параметр = 0, то задачу надо запускать вручную, используя метод /task/run
Возможные значения:
  • 0 - Нет
  • 1 - Да
Ответы
Код Ответ
200

{
    "type":"success",
    "task_uid":"jtcilv9xsl"
}
200

{
    "type":"error", 
    "errors":[
        "Поле image обязательно для заполнения"
    ]
}

//Ссылка
$api_url = 'https://pixflow.ru/api/v1/task-create/single';

//Токен авторизации из личного кабинета: https://pixflow.ru/user/api
$api_token = "jgcJkV7fSV2KzHyzmdIV4pS5VHshgbsOsRg26wQRd5AxRGIpJF";

//Заголовки
$headers = [
    'Content-Type: multipart/form-data',
    'Authorization: Bearer '.$api_token
];

//Параметры запроса (минимально необходимый вариант)
$data = [
    'copies_amount'     => 1,
    'image'             => curl_file_create(__DIR__.'/../../image_1.jpg'),
];

//Параметры запроса (расширенный вариант)
$data = [
    'copies_amount'     => 1,
    'image_names'       => 1,
    'prefix'            => '',
    'converting_format' => 1,
    'exif_mode'         => 1,
    'exif_template_id'  => 0,
    'image'             => curl_file_create(__DIR__.'/../../image_1.jpg'),
    'rotate'            => json_encode(['enable' => false, 'from' => 1, 'to' => 2]),
    'resize'            => json_encode(['enable' => true, 'mode' => 1, 'max_side' => 2000, 'from' => 1, 'to' => 2]),
    'crop'              => json_encode(['enable' => true, 'mode' => 1, 'from' => 1, 'to' => 3]),
    'sharpen'           => json_encode(['enable' => true, 'from' => 1, 'to' => 5]),
    'brightness'        => json_encode(['enable' => true, 'from' => -10, 'to' => 10]),
    'saturation'        => json_encode(['enable' => true, 'from' => -20, 'to' => 20]),
    'hue'               => json_encode(['enable' => true, 'from' => -5, 'to' => 5]),
    'noise'             => json_encode(['enable' => true, 'mode' => 1, 'intensity' => 10]),
    'reflection_mode'   => 0,
    'auto_tune'         => 1,
];

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $api_url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$response   = curl_exec($curl);
$http_code  = curl_getinfo($curl, CURLINFO_HTTP_CODE);

curl_close($curl);

if($http_code !== 200)
    exit('['.$http_code.'] Ошибка запроса');

if(!$json = json_decode($response))
    exit('Ошибка декодирования данных');

if($json->type == 'error'){

    foreach($json->errors as $error)
        echo $error.PHP_EOL;

    exit;

}

echo 'Задача успешно создана. Её UID: '.$json->task_uid;


import requests
import json
import os
import sys

# Ссылка
api_url = "https://pixflow.ru/api/v1/task-create/single"

# Токен авторизации из личного кабинета: https://pixflow.ru/user/api
api_token = "jgcJkV7fSV2KzHyzmdIV4pS5VHshgbsOsRg26wQRd5AxRGIpJF"

# Заголовки запроса
headers = {
    "Authorization": f"Bearer {api_token}",
}

# Параметры запроса (минимально необходимый вариант)
# data = {
#     "copies_amount": 5,
# }

# Параметры запроса (расширенный вариант)
data = {
    "copies_amount": 5,
    "file_location": 1,
    "image_names": 2,
    "prefix": "new_",
    "converting_format": 1,
    "exif_mode": 1,
    # "exif_template_id": 0,
    "rotate": json.dumps({"enable": True, "from": 1, "to": 2}),
    "resize": json.dumps({"enable": True, "max_side": 2000, "mode": 1, "from": 1, "to": 2}),
    "crop": json.dumps({"enable": True, "mode": 2, "from": 3, "to": 4}),
    "sharpen": json.dumps({"enable": True, "from": 5, "to": 6}),
    "brightness": json.dumps({"enable": True, "from": 7, "to": 8}),
    "saturation": json.dumps({"enable": True, "from": 9, "to": 10}),
    "hue": json.dumps({"enable": True, "from": 11, "to": 12}),
    "noise": json.dumps({"enable": True, "mode": 2, "intensity": 25}),
    "reflection_mode": 1,
    "auto_tune": 1,
    # "auto_start": 0,
}

# Путь к изображению
img_path = os.path.join(os.path.dirname(__file__), "../..", "image_1.jpg")

# Проверяем существование файла
if not os.path.exists(img_path):
    print(f"Файл не найден: {img_path}")
    sys.exit()

f = open(img_path, "rb")
files = {"image": f}

# Отправляем запрос
try:
    response = requests.post(api_url, headers=headers, data=data, files=files)
    http_code = response.status_code
    resp_text = response.text
except Exception as e:
    print("Ошибка при выполнении запроса: ", e)
    sys.exit()
finally:
    f.close()

if http_code != 200:
    print(f"[{http_code}] Ошибка запроса")
    sys.exit()

try:
    json_resp = response.json()
except json.JSONDecodeError:
    print("Ошибка декодирования ответа")
    sys.exit()

if json_resp.get("type") == "error":
    for err in json_resp.get("errors", []):
        print(err)
    sys.exit()

task_uid = json_resp.get("task_uid")
print(f"Задача успешно создана. Её UID: {task_uid}")


const axios = require("axios");
const FormData = require("form-data");
const fs = require("fs");
const path = require("path");

//Ссылка
const api_url = "https://pixflow.ru/api/v1/task-create/single";

//Токен авторизации из личного кабинета: https://pixflow.ru/user/api
const api_token = "jgcJkV7fSV2KzHyzmdIV4pS5VHshgbsOsRg26wQRd5AxRGIpJF";

(async() => {

	try{

		const form = new FormData();

		form.append("copies_amount", 5);
		form.append("file_location", 1);
		form.append("image_names", 2);
		form.append("prefix", "new_");
		form.append("converting_format", 1);
		form.append("exif_mode", 1);

		form.append("rotate", JSON.stringify({ enable: true, from: 1, to: 2 }));
		form.append("resize", JSON.stringify({ enable: true, max_side: 2000, mode: 1, from: 1, to: 2 }));
		form.append("crop", JSON.stringify({ enable: true, mode: 2, from: 3, to: 4 }));
		form.append("sharpen", JSON.stringify({ enable: true, from: 5, to: 6 }));
		form.append("brightness", JSON.stringify({ enable: true, from: 7, to: 8 }));
		form.append("saturation", JSON.stringify({ enable: true, from: 9, to: 10 }));
		form.append("hue", JSON.stringify({ enable: true, from: 11, to: 12 }));
		form.append("noise", JSON.stringify({ enable: true, mode: 2, intensity: 25 }));
		form.append("reflection_mode", 1);
		form.append("auto_tune", 1);

		//Добавляем изображение
		let imagePath = path.join(__dirname, "../../image_1.jpg");

		if(fs.existsSync(imagePath))
			form.append(`image`, fs.createReadStream(imagePath));
		
		const response = await axios.post(api_url, form, {
			headers: {
				...form.getHeaders(),
				Authorization: `Bearer ${api_token}`,
			},
		});

		if(response.data.type === "error") {
			console.error("Ошибка:");
        	response.data.errors.forEach(err => console.error(" -", err));
			return;
		}

		const taskUid = response.data.task_uid;
		console.log(`Задача успешно создана. Её UID: ${taskUid}`);

	} catch(err){

		if(err.response){
			console.error("[" + err.response.status + "] Ошибка запроса");
		} else {
			console.error("Ошибка: ", err.message);
		}

	}

})();


#Минимальный вариант с настройками по умолчанию
curl -k -X POST 'https://pixflow.ru/api/v1/task-create/single' \
-H 'Content-Type: multipart/form-data' \
-H 'Authorization: Bearer jgcJkV7fSV2KzHyzmdIV4pS5VHshgbsOsRg26wQRd5AxRGIpJF' \
-F 'copies_amount=1' \
-F 'image=@/path/to/image.jpg'

#Расширенный вариант
curl -k -X POST 'https://pixflow.ru/api/v1/task-create/single' \
-H 'Content-Type: multipart/form-data' \
-H 'Authorization: Bearer jgcJkV7fSV2KzHyzmdIV4pS5VHshgbsOsRg26wQRd5AxRGIpJF' \
-F 'copies_amount=1' \
-F 'image_names=1' \
-F 'converting_format=1' \
-F 'exif_mode=1' \
-F 'exif_template_id=0' \
-F 'image=@/path/to/image.jpg' \
-F 'rotate={"enable":false,"from":1,"to":2}' \
-F 'resize={"enable":true,"max_side":2000,"mode":1,"from":1,"to":2}' \
-F 'crop={"enable":true,"mode":1,"from":1,"to":3}' \
-F 'sharpen={"enable":true,"from":1,"to":5}' \
-F 'brightness={"enable":true,"from":-10,"to":10}' \
-F 'saturation={"enable":true,"from":-20,"to":20}' \
-F 'hue={"enable":true,"from":-5,"to":5}' \
-F 'noise={"enable":true,"mode":1,"intensity":10}' \
-F 'reflection_mode=0' \
-F 'auto_tune=1'

Наверх