NAV
ImageEditor.ai
shell python php javascript

Johdanto

Tervetuloa ImageEditor.ai-alustan sovellusliittymään!

Jokainen ominaisuus on suunniteltu auttamaan käyttäjiämme helpommin luomaan tai muokkaamaan kuvia tekoälyllä ImageEditor.ai:n järjestelmässä.

Saadaksesi API-avaimesi, siirry tilisivulle .

Oletusperus-URL-osoite

ImageEditor.ai API:n oletusperus-URL-osoite on: <b>https://api.imageeditor.ai/v1/</b>

Huomautus: turvallisuussyistä kaikkia ImageEditor.ai-sovellusliittymiä palvellaan vain HTTPS:n kautta.

Valtuutus

ImageEditor.ai-sovellusliittymän käyttämiseen tarvitset tiliisi linkitetyn API-avaimen .

Valtuutusarvo tulee lähettää otsikkopyynnössä.

Authorization: <api_key>

Luo kuvia

 import requests
import time
import shutil
import json

headers = {"Authorization": "api_key"}
params = {
    "terms": "kouluun menossa oleva kani, tietämätön tyylitatuointi",
    "is_sfw": True,
    "negative_terms": "kaksoiskappale, huonosti piirretyt kasvot, sairas, huonosti piirretyt sormet, ruma, epäselvä, sarjakuva, Disney, kehyksestä poissa, rajattu",
    "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": "kouluun menossa oleva kani, tietämätön tyylitatuointi",
    "is_sfw": true,
    "negative_terms": "kaksoiskappale, huonosti piirretyt kasvot, sairas, huonosti piirretyt sormet, ruma, epäselvä, sarjakuva, Disney, kehyksestä poissa, rajattu",
    "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'] = 'kouluun menossa oleva kani, tietämätön tyylitatuointi';
    $post_data['is_sfw'] = true;
    $post_data['negative_terms'] = 'kaksoiskappale, huonosti piirretyt kasvot, sairas, huonosti piirretyt sormet, ruma, epäselvä, sarjakuva, Disney, kehyksestä poissa, rajattu';
    $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": "kouluun menossa oleva kani, tietämätön tyylitatuointi",
        "is_sfw": true,
        "negative_terms": "kaksoiskappale, huonosti piirretyt kasvot, sairas, huonosti piirretyt sormet, ruma, epäselvä, sarjakuva, Disney, kehyksestä poissa, rajattu",
        "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);

Vastaus

/path/to/local/result.jpg

HTTP-pyyntö

POST /create-image/

Kyselyparametrit

Parametri Tyyppi Kuvaus Esimerkki
is_sfw Valinnainen Aseta "true" , jos "termit" koskevat vain aikuisille tarkoitettua kuvasisältöä true tai false
terms Edellytetään Kerro tekoälylle, minkä kuvan haluat luoda. kouluun menossa oleva kani, tietämätön tyylitatuointi
negative_terms Valinnainen Kerro tekoälylle, mitä pitäisi jättää pois. kaksoiskappale, huonosti piirretyt kasvot, sairas, huonosti piirretyt sormet, ruma, epäselvä, sarjakuva, Disney, kehyksestä poissa, rajattu
dimension Valinnainen Hae pysty- tai vaakasuuntaisia kuvia, "pysty"-arvo on oletusarvo, jos se on tyhjä tai tyhjä. portrait tai landscape
fix_faces Valinnainen Anna tekoälyn korjata kasvot tuloskuvissa. Väärä arvo on oletusarvo, jos ei lähetä. true tai false
make_tile Valinnainen Aseta true , jos haluat kuvan, jota voidaan käyttää kuviona. true tai false
upscale Valinnainen Tekoäly palauttaa suuremman skaalatun kuvan. true tai false
threesixty Valinnainen Tekoäly palauttaa 360 asteen kuvan. true tai false

Muokkaa kuvia

 import requests
import time
import shutil
import json

headers = {"Authorization": "api_key"}
params = {
    "terms": "Kulho kissanpentuja",
    "is_sfw": True,
    "replacing": "hedelmät ja hedelmän varsi",
    "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))
Muokkaa kuvia

curl -X POST \
  https://api.imageeditor.ai/v1/edit-image/ \
  -H 'Authorization: api_key' \
  -F 'files=@test_files/test.jpeg' \
  -F 'terms=Kulho kissanpentuja' \
  -F 'is_sfw=true' \
  -F 'replacing=hedelmät ja hedelmän varsi' \
  -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'] = 'kouluun menossa oleva kani, tietämätön tyylitatuointi';
    $post_data['is_sfw'] = true;
    $post_data['replacing'] = 'hedelmät ja hedelmän varsi';
    $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": "kouluun menossa oleva kani, tietämätön tyylitatuointi",
        "is_sfw": true,
        "negative_terms": "kaksoiskappale, huonosti piirretyt kasvot, sairas, huonosti piirretyt sormet, ruma, epäselvä, sarjakuva, Disney, kehyksestä poissa, rajattu",
        "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);

Vastaus

/path/to/local/result.jpg

HTTP-pyyntö

POST /edit-image/

Kyselyparametrit

Parametri Tyyppi Kuvaus Esimerkki
is_sfw Valinnainen Aseta "true" , jos "termit" koskevat vain aikuisille tarkoitettua kuvasisältöä true tai false
terms Edellytetään Kerro tekoälylle, mitä haluat kuvasi perusteella. Kulho kissanpentuja
replacing Valinnainen Kerro tekoälylle, jos haluat korvata jotain kuvassasi yllä olevan kehotteen perusteella hedelmät ja hedelmän varsi
negative_terms Valinnainen Kerro tekoälylle, mitä pitäisi jättää pois. kaksoiskappale, huonosti piirretyt kasvot, sairas, huonosti piirretyt sormet, ruma, epäselvä, sarjakuva, Disney, kehyksestä poissa, rajattu
fix_faces Valinnainen Anna tekoälyn korjata kasvot tuloskuvissa. Väärä arvo on oletusarvo, jos ei lähetä. true tai false
outpaint Valinnainen Kun aloituskuva annetaan, tekoäly voi luoda sen "ympäristön" true tai false
upscale Valinnainen Tekoäly palauttaa suuremman skaalatun kuvan. true tai false