NAV
ImageEditor.ai
shell python php javascript

Εισαγωγή

Καλώς ήρθατε στο API της πλατφόρμας ImageEditor.ai!

Κάθε δυνατότητα έχει σχεδιαστεί για να βοηθά τους χρήστες μας να δημιουργούν ή να επεξεργάζονται πιο εύκολα εικόνες με AI στο σύστημα του ImageEditor.ai.

Για να λάβετε το κλειδί API, μεταβείτε στη σελίδα λογαριασμού .

Προεπιλεγμένη διεύθυνση URL βάσης

Η προεπιλεγμένη βασική διεύθυνση URL για το ImageEditor.ai API είναι: <b>https://api.imageeditor.ai/v1/</b>

Σημείωση: για λόγους ασφαλείας, όλα τα API του ImageEditor.ai εξυπηρετούνται μόνο μέσω 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": "διπλότυπο, κακοσχεδιασμένο πρόσωπο, νοσηρό, κακοσχεδιασμένα δάχτυλα, άσχημο, θολή, κινούμενα σχέδια, disney, εκτός κάδρου, περικομμένο",
    "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": "διπλότυπο, κακοσχεδιασμένο πρόσωπο, νοσηρό, κακοσχεδιασμένα δάχτυλα, άσχημο, θολή, κινούμενα σχέδια, disney, εκτός κάδρου, περικομμένο",
    "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'] = 'διπλότυπο, κακοσχεδιασμένο πρόσωπο, νοσηρό, κακοσχεδιασμένα δάχτυλα, άσχημο, θολή, κινούμενα σχέδια, disney, εκτός κάδρου, περικομμένο';
    $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": "διπλότυπο, κακοσχεδιασμένο πρόσωπο, νοσηρό, κακοσχεδιασμένα δάχτυλα, άσχημο, θολή, κινούμενα σχέδια, disney, εκτός κάδρου, περικομμένο",
        "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 Προαιρετικός Πείτε στην τεχνητή νοημοσύνη τι πρέπει να εξαιρεθεί. διπλότυπο, κακοσχεδιασμένο πρόσωπο, νοσηρό, κακοσχεδιασμένα δάχτυλα, άσχημο, θολή, κινούμενα σχέδια, disney, εκτός κάδρου, περικομμένο
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": "διπλότυπο, κακοσχεδιασμένο πρόσωπο, νοσηρό, κακοσχεδιασμένα δάχτυλα, άσχημο, θολή, κινούμενα σχέδια, disney, εκτός κάδρου, περικομμένο",
        "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 Απαιτείται Πείτε στο AI τι θέλετε με βάση την εικόνα σας. Μπολ με γατάκια
replacing Προαιρετικός Ενημερώστε την τεχνητή νοημοσύνη εάν θέλετε να αντικαταστήσετε κάτι στην εικόνα σας με βάση την παραπάνω προτροπή φρούτα και στέλεχος φρούτων
negative_terms Προαιρετικός Πείτε στην τεχνητή νοημοσύνη τι πρέπει να εξαιρεθεί. διπλότυπο, κακοσχεδιασμένο πρόσωπο, νοσηρό, κακοσχεδιασμένα δάχτυλα, άσχημο, θολή, κινούμενα σχέδια, disney, εκτός κάδρου, περικομμένο
fix_faces Προαιρετικός Αφήστε το AI να διορθώσει πρόσωπα στις εικόνες των αποτελεσμάτων, η τιμή False είναι προεπιλεγμένη εάν δεν αποσταλεί. true ή false
outpaint Προαιρετικός Με δεδομένη την αρχική εικόνα, η τεχνητή νοημοσύνη μπορεί να δημιουργήσει το "περιβάλλον" της true ή false
upscale Προαιρετικός Το AI θα επιστρέψει μια εικόνα μεγαλύτερης κλίμακας. true ή false