NAV
ImageEditor.ai
shell python php javascript C#

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);
using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json;

class Program
{
    static readonly HttpClient client = new HttpClient();

    static async Task Main()
    {
        client.DefaultRequestHeaders.Add("Authorization", "api_key");

        // Create image
        var content = new StringContent(
            JsonConvert.SerializeObject(new
            {
                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
            }),
            System.Text.Encoding.UTF8,
            "application/json"
        );
        var response = await client.PostAsync("https://api.imageeditor.ai/v1/create-image/", content);
        var result = await response.Content.ReadAsStringAsync();
        var data = JsonConvert.DeserializeObject<dynamic>(result);

        // Poll for results
        bool finished = false;
        while (!finished)
        {
            var pollContent = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair<string, string>("uuid", (string)data.uuid)
            });
            var pollRes = await client.PostAsync("https://api.imageeditor.ai/v1/results/", pollContent);
            var pollResult = await pollRes.Content.ReadAsStringAsync();
            var pollData = JsonConvert.DeserializeObject<dynamic>(pollResult);

            finished = (bool)pollData.finished;
            if (!finished) await Task.Delay(5000);
            else Console.WriteLine(pollResult);
        }
    }
}

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);
using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json;

class Program
{
    static readonly HttpClient client = new HttpClient();

    static async Task Main()
    {
        client.DefaultRequestHeaders.Add("Authorization", "api_key");

        // Edit image with file upload
        var form = new MultipartFormDataContent();
        form.Add(new StringContent("Kulho kissanpentuja"), "terms");
        form.Add(new StringContent("true"), "is_sfw");
        form.Add(new StringContent("hedelmät ja hedelmän varsi"), "replacing");
        form.Add(new StringContent(""), "negative_terms");
        form.Add(new StringContent("true"), "fix_faces");
        form.Add(new StringContent("false"), "outpaint");
        form.Add(new StringContent("false"), "upscale");
        form.Add(new ByteArrayContent(File.ReadAllBytes("test.jpeg")), "files", "test.jpeg");

        var response = await client.PostAsync("https://api.imageeditor.ai/v1/edit-image/", form);
        var result = await response.Content.ReadAsStringAsync();
        var data = JsonConvert.DeserializeObject<dynamic>(result);

        // Poll for results
        bool finished = false;
        while (!finished)
        {
            var pollContent = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair<string, string>("uuid", (string)data.uuid)
            });
            var pollRes = await client.PostAsync("https://api.imageeditor.ai/v1/results/", pollContent);
            var pollResult = await pollRes.Content.ReadAsStringAsync();
            var pollData = JsonConvert.DeserializeObject<dynamic>(pollResult);

            finished = (bool)pollData.finished;
            if (!finished) await Task.Delay(5000);
            else Console.WriteLine(pollResult);
        }
    }
}

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