NAV
ImageEditor.ai
shell python php javascript

Introduction

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 ачкычы керек болот.

Авторизация мааниси Headers сурамында жөнөтүлүшү керек.

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/

Суроо параметрлери

Параметр Түр Description Мисал
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/

Суроо параметрлери

Параметр Түр Description Мисал
is_sfw Кошумча Эгер "шарттар" чоңдорго арналган сүрөттүн мазмуну үчүн болсо "true" коюңуз true же false
terms Талап кылынат Сүрөтүңүздүн негизинде AIга эмне каалап жатканыңызды айтыңыз. Котенка идиш
replacing Кошумча Жогорудагы көрсөтмөңүздүн негизинде сүрөтүңүздөгү бир нерсени алмаштыргыңыз келсе, AIга айтыңыз жемиштер жана жемиш сабагы
negative_terms Кошумча AIга эмнени алып салуу керектигин айтыңыз. кайталанма, начар тартылган бет, оорулуу, начар тартылган манжалар, көрксүз, бүдөмүк, мультфильм, дисней, кадрдан тышкары, кесилген
fix_faces Кошумча Натыйжадагы сүрөттөрдөгү жүздөрдү оңдоого AI уруксат берсин, эгер жөнөтүлбөсө, False мааниси демейки болуп саналат. true же false
outpaint Кошумча Баштапкы сүрөттү эске алуу менен, AI анын "чөйрөсүн" жаратышы мүмкүн true же false
upscale Кошумча AI чоңураак масштабдуу сүрөттү кайтарат. true же false