NAV
ImageEditor.ai
shell python php javascript C#

Bevezetés

Üdvözöljük az ImageEditor.ai platform API-jában!

Mindegyik funkció célja, hogy segítse felhasználóinkat az ImageEditor.ai rendszerén lévő mesterséges intelligencia segítségével könnyebben létrehozni vagy szerkeszteni képeket.

Az API-kulcs beszerzéséhez lépjen a fiókoldalra .

Alapértelmezett alap URL

Az ImageEditor.ai API alapértelmezett alap URL-je: <b>https://api.imageeditor.ai/v1/</b>

Megjegyzés: biztonsági okokból az összes ImageEditor.ai API csak HTTPS-en keresztül működik.

Engedélyezés

Az ImageEditor.ai API használatához szüksége lesz a fiókjához kapcsolódó API-kulcsra .

Az engedélyezési értéket a Fejléckérésben kell elküldeni.

Authorization: <api_key>

Hozzon létre képeket

 import requests
import time
import shutil
import json

headers = {"Authorization": "api_key"}
params = {
    "terms": "iskolába járó nyúl, tudatlan stílusú tetováló művészet",
    "is_sfw": True,
    "negative_terms": "másodpéldány, rosszul megrajzolt arc, morbid, rosszul megrajzolt ujjak, csúnya, elmosódott, rajzfilm, Disney, kereten kívül, levágva",
    "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": "iskolába járó nyúl, tudatlan stílusú tetováló művészet",
    "is_sfw": true,
    "negative_terms": "másodpéldány, rosszul megrajzolt arc, morbid, rosszul megrajzolt ujjak, csúnya, elmosódott, rajzfilm, Disney, kereten kívül, levágva",
    "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'] = 'iskolába járó nyúl, tudatlan stílusú tetováló művészet';
    $post_data['is_sfw'] = true;
    $post_data['negative_terms'] = 'másodpéldány, rosszul megrajzolt arc, morbid, rosszul megrajzolt ujjak, csúnya, elmosódott, rajzfilm, Disney, kereten kívül, levágva';
    $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": "iskolába járó nyúl, tudatlan stílusú tetováló művészet",
        "is_sfw": true,
        "negative_terms": "másodpéldány, rosszul megrajzolt arc, morbid, rosszul megrajzolt ujjak, csúnya, elmosódott, rajzfilm, Disney, kereten kívül, levágva",
        "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 = "iskolába járó nyúl, tudatlan stílusú tetováló művészet",
                is_sfw = true,
                negative_terms = "másodpéldány, rosszul megrajzolt arc, morbid, rosszul megrajzolt ujjak, csúnya, elmosódott, rajzfilm, Disney, kereten kívül, levágva",
                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);
        }
    }
}

Válasz

/path/to/local/result.jpg

HTTP-kérés

POST /create-image/

Paraméterek lekérdezése

Paraméter típus Leírás Példa
is_sfw Választható Állítsa be "true" értéket, ha a „kifejezések” felnőtt képtartalomra vonatkoznak true vagy false
terms Kívánt Mondja el az AI-nak, hogy milyen képet szeretne létrehozni. iskolába járó nyúl, tudatlan stílusú tetováló művészet
negative_terms Választható Mondja el az MI-nek, hogy mit kell kizárnia. másodpéldány, rosszul megrajzolt arc, morbid, rosszul megrajzolt ujjak, csúnya, elmosódott, rajzfilm, Disney, kereten kívül, levágva
dimension Választható Álló vagy fekvő képeket kap, az "álló" érték az alapértelmezett, ha üres vagy nulla. portrait vagy landscape
fix_faces Választható Hagyja, hogy az AI rögzítse az arcokat az eredményképekben, ha nem küldi el, az alapértelmezett érték a false. true vagy false
make_tile Választható Állítsa true , ha mintaként használható képet szeretne. true vagy false
upscale Választható Az AI nagyobb méretarányú képet ad vissza. true vagy false
threesixty Választható Az AI 360 fokos képet ad vissza. true vagy false

Képek szerkesztése

 import requests
import time
import shutil
import json

headers = {"Authorization": "api_key"}
params = {
    "terms": "Tál cica",
    "is_sfw": True,
    "replacing": "gyümölcsök és termésszár",
    "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))
Képek szerkesztése

curl -X POST \
  https://api.imageeditor.ai/v1/edit-image/ \
  -H 'Authorization: api_key' \
  -F 'files=@test_files/test.jpeg' \
  -F 'terms=Tál cica' \
  -F 'is_sfw=true' \
  -F 'replacing=gyümölcsök és termésszár' \
  -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'] = 'iskolába járó nyúl, tudatlan stílusú tetováló művészet';
    $post_data['is_sfw'] = true;
    $post_data['replacing'] = 'gyümölcsök és termésszár';
    $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": "iskolába járó nyúl, tudatlan stílusú tetováló művészet",
        "is_sfw": true,
        "negative_terms": "másodpéldány, rosszul megrajzolt arc, morbid, rosszul megrajzolt ujjak, csúnya, elmosódott, rajzfilm, Disney, kereten kívül, levágva",
        "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("Tál cica"), "terms");
        form.Add(new StringContent("true"), "is_sfw");
        form.Add(new StringContent("gyümölcsök és termésszár"), "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);
        }
    }
}

Válasz

/path/to/local/result.jpg

HTTP-kérés

POST /edit-image/

Paraméterek lekérdezése

Paraméter típus Leírás Példa
is_sfw Választható Állítsa be "true" értéket, ha a „kifejezések” felnőtt képtartalomra vonatkoznak true vagy false
terms Kívánt Mondja el az MI-nek, hogy mit szeretne a kép alapján. Tál cica
replacing Választható Mondja el az MI-nek, ha le szeretne cserélni valamit a képében a fenti felszólítás alapján gyümölcsök és termésszár
negative_terms Választható Mondja el az MI-nek, hogy mit kell kizárnia. másodpéldány, rosszul megrajzolt arc, morbid, rosszul megrajzolt ujjak, csúnya, elmosódott, rajzfilm, Disney, kereten kívül, levágva
fix_faces Választható Hagyja, hogy az AI rögzítse az arcokat az eredményképekben, ha nem küldi el, az alapértelmezett érték a false. true vagy false
outpaint Választható Adott egy kezdő kép, az AI létrehozhatja a "környezetét" true vagy false
upscale Választható Az AI nagyobb méretarányú képet ad vissza. true vagy false