NAV
ImageEditor.ai
shell python php javascript

Уводзіны

Вітаем у API платформы ImageEditor.ai!

Кожная функцыя распрацавана, каб дапамагчы нашым карыстальнікам лягчэй ствараць або рэдагаваць выявы з дапамогай штучнага інтэлекту ў сістэме ImageEditor.ai.

Каб атрымаць ключ API, перайдзіце на старонку ўліковага запісу .

Базавы URL па змаўчанні

Базавы URL па змаўчанні для API ImageEditor.ai: <b>https://api.imageeditor.ai/v1/</b>

Заўвага: у мэтах бяспекі ўсе API ImageEditor.ai абслугоўваюцца толькі праз HTTPS.

Аўтарызацыя

Каб выкарыстоўваць API ImageEditor.ai, вам спатрэбіцца ключ API, які звязаны з вашым уліковым запісам .

Значэнне аўтарызацыі павінна быць адпраўлена ў запыце загалоўкаў.

Authorization: <api_key>

Стварэнне малюнкаў

 import requests
import time
import shutil
import json

headers = {"Authorization": "api_key"}
params = {
    "terms": "трус ідзе ў школу, мастацтва татуіроўкі ў стылі невукаў",
    "is_sfw": True,
    "negative_terms": "дублікат, дрэнна намаляваны твар, хваравіты, дрэнна намаляваныя пальцы, непрыгожы, размыты, мультфільм, Дысней, па-за кадрам, абрэзаны",
    "dimension": "landscape",
    "fix_faces": True,
    "make_tile": False,
    "upscale": False,
    "threesixty": False,
}
base_api_url = "https://api.imageeditor.ai"
api_url = f"{base_api_url}/v1"


def download_file(url, local_filename):
    url = f"{base_api_url}/{url}"
    with requests.get(url, stream=True) as r:
        with open(local_filename, "wb") as f:
            shutil.copyfileobj(r.raw, f)
    return local_filename


def convert_files(api_url, params, headers):
    r = requests.post(
        url=f"{api_url}/create-image/",
        json=params,
        headers=headers
    )
    return r.json()


def get_results(params):
    if params.get("error"):
        print(params)
        return

    r = requests.post(
        url=f"{api_url}/results/",
        data=params
    )
    data = r.json()
    finished = data.get("finished")

    while not finished:
        if int(data.get("queue_count")) > 0:
            print("queue: %s" % data.get("queue_count"))

        time.sleep(5)
        results = get_results(params)
        results = json.dumps(results)

        if results:
            break

    if finished:
        for f in data.get("files"):
            print(f.get("url"))
            download_file("%s" % f.get("url"), "%s" % f.get("filename"))
        return {"finished": "files downloaded"}
    return r.json()


get_results(convert_files(api_url, params, headers))
Create image

curl -X POST \
  https://api.imageeditor.ai/v1/create-image/ \
  -H 'Authorization: api_key' \
  -H 'Content-Type: application/json' \
  -d '{
    "terms": "трус ідзе ў школу, мастацтва татуіроўкі ў стылі невукаў",
    "is_sfw": true,
    "negative_terms": "дублікат, дрэнна намаляваны твар, хваравіты, дрэнна намаляваныя пальцы, непрыгожы, размыты, мультфільм, Дысней, па-за кадрам, абрэзаны",
    "dimension": "landscape",
    "fix_faces": true,
    "make_tile": false,
    "upscale": false,
    "threesixty": false
}'


Get created image URL

curl -X POST \
  https://api.imageeditor.ai/v1/results/ \
  -F 'uuid=response_uuid'
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ERROR | E_PARSE);

$headers = array("Authorization: api_key");
$file_list = ['/test_files/test.jpeg'];
$api_url = "https://api.imageeditor.ai/v1/edit-image/";
$results_url = "https://api.imageeditor.ai/v1/results/";

function download_file($url, $filename){
    $curl = curl_init();
    $url = "https://api.imageeditor.ai" . $url;
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_SSLVERSION, 3);
    $data = curl_exec($curl);
    $error = curl_error($curl);
    curl_close ($curl);
    # Make sure destionation path exists
    $destination_path = "/path/to/result/files/";
    $destination_file = fopen($destination_path . $filename, "w+");
    fwrite($destination_file, $data);
    fclose($destination_file);
}

function convert_files($file_list, $headers, $api_url) {
    $post_data['terms'] = 'трус ідзе ў школу, мастацтва татуіроўкі ў стылі невукаў';
    $post_data['is_sfw'] = true;
    $post_data['negative_terms'] = 'дублікат, дрэнна намаляваны твар, хваравіты, дрэнна намаляваныя пальцы, непрыгожы, размыты, мультфільм, Дысней, па-за кадрам, абрэзаны';
    $post_data['dimension'] = 'landscape';
    $post_data['fix_faces'] = true;
    $post_data['make_tile'] = false;
    $post_data['upscale'] = false;
    $post_data['threesixty'] = false;

    foreach ($file_list as $index => $file) {
        $post_data['file[' . $index . ']'] = curl_file_create(
            realpath($file),
            mime_content_type($file),
            basename($file)
        );
    }

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $api_url);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $content = curl_exec($curl);
    curl_close($curl);

    return json_decode($content);
}

function get_results($params, $results_url, $headers) {
    if ($params->error) {
        print_r($params->error);
        return;
    }

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $results_url);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, json_decode(json_encode($params), true));
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $content = json_decode(curl_exec($curl));
    curl_close($curl);

    if ($content->finished == false) {
        if (intval($content->queue_count) > 0) {
            print_r("queue: $content->queue_count");
        }

        sleep(5);
        $results = get_results($params, $results_url, $headers);
        return;
    }

    foreach ($content->files as $f) {
        download_file($f->url, $f->filename);
    }
}

$resp = convert_files($file_list, $headers, $api_url);
get_results($resp, $results_url, $headers);
?>
const request = require('request');
const fs = require('fs');

let file_list = ['/test_files/sala.png']
const api_url = 'https://api.imageeditor.ai/v1/create-image/'
const results_url = 'https://api.imageeditor.ai/v1/results/'

function convertFiles(file_list) {
    let data = {
        "terms": "трус ідзе ў школу, мастацтва татуіроўкі ў стылі невукаў",
        "is_sfw": true,
        "negative_terms": "дублікат, дрэнна намаляваны твар, хваравіты, дрэнна намаляваныя пальцы, непрыгожы, размыты, мультфільм, Дысней, па-за кадрам, абрэзаны",
        "dimension": "landscape",
        "fix_faces": true,
        "make_tile": false,
        "upscale": false,
        "threesixty": false,
    };

    for (var i = 0; i < file_list.length; i++) {
        formData['files'] = fs.createReadStream(file_list[i]);
    }

    request({
        url: api_url,
        method: 'post',
        json: data,
        headers: {
            "Authorization": "api_key",
            "Content-Type": "application/json",
        }
    }, function (err, res, body) {
        if (err) {
            console.error(err);
            return err;
        }
        getResults(JSON.parse(body));
    });
}

function getResults(data) {
    if (data.error) {
        console.error(data);
        return data.error;
    }
    request({
        url: results_url,
        method: 'post',
        formData: data
    }, function (e, r, body) {
        response = JSON.parse(body);
        console.log(response);
        if (!response.finished) {
            setTimeout(
                function () {
                    getResults(data);
                }, 1000
            );
        }

        console.log(response);
    })
}

convertFiles(file_list);

Адказ

/path/to/local/result.jpg

HTTP-запыт

POST /create-image/

Параметры запыту

Параметр Тып Апісанне прыклад
is_sfw Дадаткова Усталюйце "true" , калі "ўмовы" адносяцца да змесціва малюнкаў для дарослых true або false
terms абавязковы Скажыце штучнаму інтэлекту, які вобраз вы хочаце стварыць. трус ідзе ў школу, мастацтва татуіроўкі ў стылі невукаў
negative_terms Дадаткова Скажыце AI, што трэба выключыць. дублікат, дрэнна намаляваны твар, хваравіты, дрэнна намаляваныя пальцы, непрыгожы, размыты, мультфільм, Дысней, па-за кадрам, абрэзаны
dimension Дадаткова Атрымлівайце партрэтныя або альбомныя выявы, значэнне "партрэт" па змаўчанні, калі пустое або роўнае нулю. portrait або landscape
fix_faces Дадаткова Дазвольце штучнаму інтэлекту выправіць твары на выніковых відарысах. Калі не адпраўляць, па змаўчанні выкарыстоўваецца значэнне False. true або false
make_tile Дадаткова Усталюйце true , калі вы хочаце выяву, якую можна выкарыстоўваць у якасці ўзору. true або false
upscale Дадаткова AI верне малюнак у большым маштабе. true або false
threesixty Дадаткова ШІ верне 360-градусную выяву. true або false

Рэдагаваць выявы

 import requests
import time
import shutil
import json

headers = {"Authorization": "api_key"}
params = {
    "terms": "Міска з кацянятамі",
    "is_sfw": True,
    "replacing": "плады і пладаножкі",
    "negative_terms": "",
    "fix_faces": True,
    "outpaint": False,
    "upscale": False,
}
file_path = "path/to/test.jpeg"
base_api_url = "https://api.imageeditor.ai"
api_url = f"{base_api_url}/v1"


def download_file(url, local_filename):
    url = f"{base_api_url}/{url}"
    with requests.get(url, stream=True) as r:
        with open(local_filename, "wb") as f:
            shutil.copyfileobj(r.raw, f)
    return local_filename


def convert_files(api_url, params, headers):
    files = [eval(f'("files", open("{file_path}", "rb"))')]
    r = requests.post(
        url=f"{api_url}/edit-image/",
        files=files,
        data=params,
        headers=headers
    )
    return r.json()


def get_results(params):
    if params.get("error"):
        print(params)
        return

    r = requests.post(
        url=f"{api_url}/results/",
        data=params
    )
    data = r.json()
    finished = data.get("finished")

    while not finished:
        if int(data.get("queue_count")) > 0:
            print("queue: %s" % data.get("queue_count"))

        time.sleep(5)
        results = get_results(params)
        results = json.dumps(results)

        if results:
            break

    if finished:
        for f in data.get("files"):
            print(f.get("url"))
            download_file("%s" % f.get("url"), "%s" % f.get("filename"))
        return {"finished": "files downloaded"}
    return r.json()


get_results(convert_files(api_url, params, headers))
Рэдагаваць выявы

curl -X POST \
  https://api.imageeditor.ai/v1/edit-image/ \
  -H 'Authorization: api_key' \
  -F 'files=@test_files/test.jpeg' \
  -F 'terms=Міска з кацянятамі' \
  -F 'is_sfw=true' \
  -F 'replacing=плады і пладаножкі' \
  -F 'negative_terms=' \
  -F 'fix_faces=true' \
  -F 'outpaint=false' \
  -F 'upscale=false'


Get result image

curl -X POST \
  https://api.imageeditor.ai/v1/results/ \
  -F 'uuid=response_uuid'
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ERROR | E_PARSE);

$headers = array("Authorization: api_key");
$file_list = ['/test_files/test.jpeg'];
$api_url = "https://api.imageeditor.ai/v1/edit-image/";
$results_url = "https://api.imageeditor.ai/v1/results/";

function download_file($url, $filename){
    $curl = curl_init();
    $url = "https://api.imageeditor.ai" . $url;
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_SSLVERSION, 3);
    $data = curl_exec($curl);
    $error = curl_error($curl);
    curl_close ($curl);
    # Make sure destionation path exists
    $destination_path = "/path/to/result/files/";
    $destination_file = fopen($destination_path . $filename, "w+");
    fwrite($destination_file, $data);
    fclose($destination_file);
}

function convert_files($file_list, $headers, $api_url) {
    $post_data['terms'] = 'трус ідзе ў школу, мастацтва татуіроўкі ў стылі невукаў';
    $post_data['is_sfw'] = true;
    $post_data['replacing'] = 'плады і пладаножкі';
    $post_data['negative_terms'] = '';
    $post_data['fix_faces'] = true;
    $post_data['outpaint'] = false;
    $post_data['upscale'] = false;

    foreach ($file_list as $index => $file) {
        $post_data['file[' . $index . ']'] = curl_file_create(
            realpath($file),
            mime_content_type($file),
            basename($file)
        );
    }

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $api_url);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $content = curl_exec($curl);
    curl_close($curl);

    return json_decode($content);
}

function get_results($params, $results_url, $headers) {
    if ($params->error) {
        print_r($params->error);
        return;
    }

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $results_url);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, json_decode(json_encode($params), true));
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $content = json_decode(curl_exec($curl));
    curl_close($curl);

    if ($content->finished == false) {
        if (intval($content->queue_count) > 0) {
            print_r("queue: $content->queue_count");
        }

        sleep(5);
        $results = get_results($params, $results_url, $headers);
        return;
    }

    foreach ($content->files as $f) {
        download_file($f->url, $f->filename);
    }
}

$resp = convert_files($file_list, $headers, $api_url);
get_results($resp, $results_url, $headers);
?>
const request = require('request');
const fs = require('fs');

let file_list = ['/test_files/test.jpeg']
const api_url = 'https://api.imageeditor.ai/v1/edit-image/'
const results_url = 'https://api.imageeditor.ai/v1/results/'

function convertFiles(file_list) {
    let formData = {
        "terms": "трус ідзе ў школу, мастацтва татуіроўкі ў стылі невукаў",
        "is_sfw": true,
        "negative_terms": "дублікат, дрэнна намаляваны твар, хваравіты, дрэнна намаляваныя пальцы, непрыгожы, размыты, мультфільм, Дысней, па-за кадрам, абрэзаны",
        "dimension": "landscape",
        "fix_faces": true,
        "make_tile": false,
        "upscale": false,
        "threesixty": false,
    };

    for (var i = 0; i < file_list.length; i++) {
        formData['files'] = fs.createReadStream(file_list[i]);
    }

    request({
        url: api_url,
        method: 'post',
        formData: formData,
        headers: {
            "Authorization": "api_key",
            "Content-Type": "multipart/form-data",
        }
    }, function (err, res, body) {
        if (err) {
            console.error(err);
            return err;
        }
        getResults(JSON.parse(body));
    });
}

function getResults(data) {
    if (data.error) {
        console.error(data);
        return data.error;
    }
    request({
        url: results_url,
        method: 'post',
        formData: data
    }, function (e, r, body) {
        response = JSON.parse(body);
        console.log(response);
        if (!response.finished) {
            setTimeout(
                function () {
                    getResults(data);
                }, 1000
            );
        }

        console.log(response);
    })
}

convertFiles(file_list);

Адказ

/path/to/local/result.jpg

HTTP-запыт

POST /edit-image/

Параметры запыту

Параметр Тып Апісанне прыклад
is_sfw Дадаткова Усталюйце "true" , калі "ўмовы" адносяцца да змесціва малюнкаў для дарослых true або false
terms абавязковы Скажыце штучнаму інтэлекту, што вы хочаце, грунтуючыся на вашым малюнку. Міска з кацянятамі
replacing Дадаткова Скажыце штучнаму інтэлекту, калі вы хочаце замяніць што-небудзь на сваім малюнку, зыходзячы з падказкі вышэй плады і пладаножкі
negative_terms Дадаткова Скажыце AI, што трэба выключыць. дублікат, дрэнна намаляваны твар, хваравіты, дрэнна намаляваныя пальцы, непрыгожы, размыты, мультфільм, Дысней, па-за кадрам, абрэзаны
fix_faces Дадаткова Дазвольце штучнаму інтэлекту выправіць твары на выніковых відарысах. Калі не адпраўляць, па змаўчанні выкарыстоўваецца значэнне False. true або false
outpaint Дадаткова Улічваючы зыходны відарыс, штучны інтэлект можа стварыць яго "асяроддзе" true або false
upscale Дадаткова AI верне малюнак у большым маштабе. true або false