NAV
ImageEditor.ai
shell python php javascript C#

การแนะนำ

ยินดีต้อนรับสู่ ImageEditor.ai platform API!

ฟีเจอร์แต่ละอย่างได้รับการออกแบบมาเพื่อช่วยให้ผู้ใช้ของเราสร้างหรือแก้ไขภาพได้ง่ายขึ้นด้วย 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": "ซ้ำกัน, วาดใบหน้าได้ไม่ดี, เป็นโรค, วาดนิ้วได้ไม่ดี, อัปลักษณ์, ไม่ชัด, การ์ตูน, ดิสนีย์, อยู่นอกกรอบ, ครอบตัด",
    "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": "ซ้ำกัน, วาดใบหน้าได้ไม่ดี, เป็นโรค, วาดนิ้วได้ไม่ดี, อัปลักษณ์, ไม่ชัด, การ์ตูน, ดิสนีย์, อยู่นอกกรอบ, ครอบตัด",
    "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'] = 'ซ้ำกัน, วาดใบหน้าได้ไม่ดี, เป็นโรค, วาดนิ้วได้ไม่ดี, อัปลักษณ์, ไม่ชัด, การ์ตูน, ดิสนีย์, อยู่นอกกรอบ, ครอบตัด';
    $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": "ซ้ำกัน, วาดใบหน้าได้ไม่ดี, เป็นโรค, วาดนิ้วได้ไม่ดี, อัปลักษณ์, ไม่ชัด, การ์ตูน, ดิสนีย์, อยู่นอกกรอบ, ครอบตัด",
        "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 = "กระต่ายไปโรงเรียน ศิลปะการสักแบบงมงาย",
                is_sfw = true,
                negative_terms = "ซ้ำกัน, วาดใบหน้าได้ไม่ดี, เป็นโรค, วาดนิ้วได้ไม่ดี, อัปลักษณ์, ไม่ชัด, การ์ตูน, ดิสนีย์, อยู่นอกกรอบ, ครอบตัด",
                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);
        }
    }
}

การตอบสนอง

/path/to/local/result.jpg

คำขอ HTTP

POST /create-image/

พารามิเตอร์แบบสอบถาม

พารามิเตอร์ พิมพ์ คำอธิบาย ตัวอย่าง
is_sfw ไม่จำเป็น ตั้งค่า "true" หาก "เงื่อนไข" เป็นเนื้อหาภาพสำหรับผู้ใหญ่ true หรือ false
terms ที่จำเป็น บอก AI ว่าคุณต้องการสร้างภาพใด กระต่ายไปโรงเรียน ศิลปะการสักแบบงมงาย
negative_terms ไม่จำเป็น บอก AI ว่าควรยกเว้นอะไร ซ้ำกัน, วาดใบหน้าได้ไม่ดี, เป็นโรค, วาดนิ้วได้ไม่ดี, อัปลักษณ์, ไม่ชัด, การ์ตูน, ดิสนีย์, อยู่นอกกรอบ, ครอบตัด
dimension ไม่จำเป็น รับภาพแนวตั้งหรือแนวนอน ค่า "portrait" เป็นค่าเริ่มต้นหากว่างหรือว่าง 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": "ซ้ำกัน, วาดใบหน้าได้ไม่ดี, เป็นโรค, วาดนิ้วได้ไม่ดี, อัปลักษณ์, ไม่ชัด, การ์ตูน, ดิสนีย์, อยู่นอกกรอบ, ครอบตัด",
        "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("ชามลูกแมว"), "terms");
        form.Add(new StringContent("true"), "is_sfw");
        form.Add(new StringContent("ผลและก้านผล"), "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);
        }
    }
}

การตอบสนอง

/path/to/local/result.jpg

คำขอ HTTP

POST /edit-image/

พารามิเตอร์แบบสอบถาม

พารามิเตอร์ พิมพ์ คำอธิบาย ตัวอย่าง
is_sfw ไม่จำเป็น ตั้งค่า "true" หาก "เงื่อนไข" เป็นเนื้อหาภาพสำหรับผู้ใหญ่ true หรือ false
terms ที่จำเป็น บอก AI ว่าคุณต้องการอะไรจากภาพของคุณ ชามลูกแมว
replacing ไม่จำเป็น บอก AI หากคุณต้องการแทนที่บางสิ่งในรูปภาพของคุณตามคำแนะนำด้านบน ผลและก้านผล
negative_terms ไม่จำเป็น บอก AI ว่าควรยกเว้นอะไร ซ้ำกัน, วาดใบหน้าได้ไม่ดี, เป็นโรค, วาดนิ้วได้ไม่ดี, อัปลักษณ์, ไม่ชัด, การ์ตูน, ดิสนีย์, อยู่นอกกรอบ, ครอบตัด
fix_faces ไม่จำเป็น ให้ AI แก้ไขใบหน้าในภาพผลลัพธ์ ค่า False เป็นค่าเริ่มต้นหากไม่ส่ง true หรือ false
outpaint ไม่จำเป็น จากภาพเริ่มต้น AI สามารถสร้าง "สิ่งรอบข้าง" ได้ true หรือ false
upscale ไม่จำเป็น AI จะส่งคืนภาพที่ขยายใหญ่ขึ้น true หรือ false