NAV
ImageEditor.ai
shell python php javascript

Кіріспе

ImageEditor.ai платформасының API интерфейсіне қош келдіңіз!

Әрбір мүмкіндік пайдаланушыларға ImageEditor.ai жүйесінде AI көмегімен кескіндерді оңай жасауға немесе өңдеуге көмектесу үшін жасалған.

API кілтін алу үшін тіркелгі бетіне өтіңіз.

Әдепкі негізгі URL

ImageEditor.ai API үшін әдепкі негізгі URL мекенжайы: <b>https://api.imageeditor.ai/v1/</b>

Ескертпе: қауіпсіздік мақсатында барлық ImageEditor.ai API интерфейстері тек HTTPS арқылы қызмет етеді.

Авторизация

ImageEditor.ai API пайдалану үшін тіркелгіңізге байланысты 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 Міндетті AI-ға қандай кескін жасағыңыз келетінін айтыңыз. қоян мектепке барады, надан стильдегі тату өнері
negative_terms Қосымша AI-ға нені алып тастау керектігін айтыңыз. қайталанатын, нашар сызылған бет, ауру, нашар сызылған саусақтар, ұсқынсыз, бұлыңғыр, мультфильм, дисней, жақтаудан тыс, кесілген
dimension Қосымша Портреттік немесе альбомдық кескіндерді алыңыз, бос немесе бос болса, "портрет" мәні әдепкі болып табылады. portrait немесе landscape
fix_faces Қосымша AI нәтиже кескіндеріндегі беттерді түзетуге мүмкіндік беріңіз, егер жіберілмесе, False мәні әдепкі болып табылады. true немесе false
make_tile Қосымша Үлгі ретінде пайдалануға болатын кескін қажет болса, true орнатыңыз. true немесе false
upscale Қосымша AI үлкенірек масштабталған кескінді қайтарады. true немесе false
threesixty Қосымша AI 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 Қосымша Жоғарыдағы нұсқаудың негізінде суреттегі бір нәрсені ауыстырғыңыз келсе, AI-ға айтыңыз жемістер мен жеміс сабағы
negative_terms Қосымша AI-ға нені алып тастау керектігін айтыңыз. қайталанатын, нашар сызылған бет, ауру, нашар сызылған саусақтар, ұсқынсыз, бұлыңғыр, мультфильм, дисней, жақтаудан тыс, кесілген
fix_faces Қосымша AI нәтиже кескіндеріндегі беттерді түзетуге мүмкіндік беріңіз, егер жіберілмесе, False мәні әдепкі болып табылады. true немесе false
outpaint Қосымша Бастапқы кескінді ескере отырып, AI оның «айналасын» жасай алады true немесе false
upscale Қосымша AI үлкенірек масштабталған кескінді қайтарады. true немесе false