NAV
ImageEditor.ai
shell python php javascript

Prezantimi

Mirë se vini në API të platformës ImageEditor.ai!

Çdo veçori është krijuar për të ndihmuar përdoruesit tanë të krijojnë ose modifikojnë më lehtë imazhe me AI në sistemin e ImageEditor.ai.

Për të marrë çelësin tuaj API, ju lutemi shkoni në faqen e llogarisë .

URL-ja bazë e parazgjedhur

URL-ja bazë e parazgjedhur për ImageEditor.ai API është: <b>https://api.imageeditor.ai/v1/</b>

Shënim: për arsye sigurie, të gjitha API-të e ImageEditor.ai shërbehen vetëm përmes HTTPS.

Autorizimi

Për të përdorur API-në ImageEditor.ai, do t'ju duhet çelësi API që është i lidhur me llogarinë tuaj.

Vlera e autorizimit duhet të dërgohet në kërkesën Headers.

Authorization: <api_key>

Krijo imazhe

 import requests
import time
import shutil
import json

headers = {"Authorization": "api_key"}
params = {
    "terms": "lepuri që shkon në shkollë, arti i tatuazheve në stil injorant",
    "is_sfw": True,
    "negative_terms": "dublikatë, fytyrë e vizatuar dobët, e sëmurë, gishta të vizatuar keq, e shëmtuar, e paqartë, film vizatimor, disney, jashtë kornizës, i prerë",
    "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": "lepuri që shkon në shkollë, arti i tatuazheve në stil injorant",
    "is_sfw": true,
    "negative_terms": "dublikatë, fytyrë e vizatuar dobët, e sëmurë, gishta të vizatuar keq, e shëmtuar, e paqartë, film vizatimor, disney, jashtë kornizës, i prerë",
    "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'] = 'lepuri që shkon në shkollë, arti i tatuazheve në stil injorant';
    $post_data['is_sfw'] = true;
    $post_data['negative_terms'] = 'dublikatë, fytyrë e vizatuar dobët, e sëmurë, gishta të vizatuar keq, e shëmtuar, e paqartë, film vizatimor, disney, jashtë kornizës, i prerë';
    $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": "lepuri që shkon në shkollë, arti i tatuazheve në stil injorant",
        "is_sfw": true,
        "negative_terms": "dublikatë, fytyrë e vizatuar dobët, e sëmurë, gishta të vizatuar keq, e shëmtuar, e paqartë, film vizatimor, disney, jashtë kornizës, i prerë",
        "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);

Përgjigje

/path/to/local/result.jpg

Kërkesë HTTP

POST /create-image/

Parametrat e pyetjes

Parametri Lloji Përshkrim Shembull
is_sfw Fakultative Cakto "true" nëse "kushtet" janë për përmbajtjen e imazhit për të rritur true ose false
terms E detyrueshme Tregojini AI se çfarë imazhi dëshironi të krijoni. lepuri që shkon në shkollë, arti i tatuazheve në stil injorant
negative_terms Fakultative Tregojini AI se çfarë duhet të përjashtohet. dublikatë, fytyrë e vizatuar dobët, e sëmurë, gishta të vizatuar keq, e shëmtuar, e paqartë, film vizatimor, disney, jashtë kornizës, i prerë
dimension Fakultative Merrni imazhe portreti ose peizazhi, vlera "portret" është e paracaktuar nëse është bosh ose e pavlefshme. portrait ose landscape
fix_faces Fakultative Lëreni AI të rregullojë fytyrat në imazhet e rezultateve, vlera e rreme është e paracaktuar nëse nuk dërgohet. true ose false
make_tile Fakultative Vendosni true nëse dëshironi një imazh që mund të përdoret si model. true ose false
upscale Fakultative AI do të kthejë një imazh më të madh të shkallëzuar. true ose false
threesixty Fakultative AI do të kthejë një imazh 360º. true ose false

Redaktoni imazhet

 import requests
import time
import shutil
import json

headers = {"Authorization": "api_key"}
params = {
    "terms": "Tas me kotele",
    "is_sfw": True,
    "replacing": "frutat dhe kërcelli i frutave",
    "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))
Redaktoni imazhet

curl -X POST \
  https://api.imageeditor.ai/v1/edit-image/ \
  -H 'Authorization: api_key' \
  -F 'files=@test_files/test.jpeg' \
  -F 'terms=Tas me kotele' \
  -F 'is_sfw=true' \
  -F 'replacing=frutat dhe kërcelli i frutave' \
  -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'] = 'lepuri që shkon në shkollë, arti i tatuazheve në stil injorant';
    $post_data['is_sfw'] = true;
    $post_data['replacing'] = 'frutat dhe kërcelli i frutave';
    $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": "lepuri që shkon në shkollë, arti i tatuazheve në stil injorant",
        "is_sfw": true,
        "negative_terms": "dublikatë, fytyrë e vizatuar dobët, e sëmurë, gishta të vizatuar keq, e shëmtuar, e paqartë, film vizatimor, disney, jashtë kornizës, i prerë",
        "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);

Përgjigje

/path/to/local/result.jpg

Kërkesë HTTP

POST /edit-image/

Parametrat e pyetjes

Parametri Lloji Përshkrim Shembull
is_sfw Fakultative Cakto "true" nëse "kushtet" janë për përmbajtjen e imazhit për të rritur true ose false
terms E detyrueshme Tregojuni AI-së çfarë dëshironi bazuar në imazhin tuaj. Tas me kotele
replacing Fakultative Tregojuni AI nëse doni të zëvendësoni diçka në imazhin tuaj bazuar në kërkesën tuaj më sipër frutat dhe kërcelli i frutave
negative_terms Fakultative Tregojini AI se çfarë duhet të përjashtohet. dublikatë, fytyrë e vizatuar dobët, e sëmurë, gishta të vizatuar keq, e shëmtuar, e paqartë, film vizatimor, disney, jashtë kornizës, i prerë
fix_faces Fakultative Lëreni AI të rregullojë fytyrat në imazhet e rezultateve, vlera e rreme është e paracaktuar nëse nuk dërgohet. true ose false
outpaint Fakultative Duke pasur një imazh fillestar, AI mund të gjenerojë "rrethinën" e saj true ose false
upscale Fakultative AI do të kthejë një imazh më të madh të shkallëzuar. true ose false