NAV
ImageEditor.ai
shell python php javascript

សេចក្តីផ្តើម

សូមស្វាគមន៍មកកាន់កម្មវិធី ImageEditor.ai platform API!

មុខងារនីមួយៗត្រូវបានរចនាឡើងដើម្បីជួយអ្នកប្រើប្រាស់របស់យើងកាន់តែងាយស្រួលបង្កើត ឬកែសម្រួលរូបភាពជាមួយ AI នៅលើប្រព័ន្ធ ImageEditor.ai។

ដើម្បីទទួលបានលេខកូដ API របស់អ្នក សូមចូលទៅកាន់ ទំព័រគណនី

URL មូលដ្ឋានលំនាំដើម

URL មូលដ្ឋានលំនាំដើមសម្រាប់ ImageEditor.ai API គឺ៖ <b>https://api.imageeditor.ai/v1/</b>

ចំណាំ៖ សម្រាប់ហេតុផលសុវត្ថិភាព រាល់ APIs ImageEditor.ai ត្រូវបានបម្រើតាមរយៈ HTTPS ប៉ុណ្ណោះ។

ការអនុញ្ញាត

ដើម្បីប្រើ ImageEditor.ai API អ្នកនឹងត្រូវការ API key ដែលត្រូវបានភ្ជាប់ទៅ គណនី របស់អ្នក។

តម្លៃអនុញ្ញាតគួរតែត្រូវបានផ្ញើនៅក្នុងសំណើបឋមកថា។

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" ប្រសិនបើ "លក្ខខណ្ឌ" គឺសម្រាប់មាតិការូបភាពមនុស្សពេញវ័យ truefalse
terms ទាមទារ ប្រាប់ AI ថាតើរូបភាពអ្វីដែលអ្នកចង់បង្កើត។ ទន្សាយទៅរៀន ស្ទីលល្ងង់ សិល្បៈសាក់
negative_terms ស្រេចចិត្ត ប្រាប់ AI នូវអ្វីដែលគួរត្រូវបានដកចេញ។ ស្ទួន, គូរមុខមិនល្អ, ឈឺ, ម្រាមដៃគូរមិនល្អ, អាក្រក់, ព្រិល, រូបថ្លុក, Disney, ក្រៅស៊ុម, ច្រឹប
dimension ស្រេចចិត្ត ទទួលបានរូបភាពបញ្ឈរ ឬទេសភាព តម្លៃ "បញ្ឈរ" គឺជាលំនាំដើម ប្រសិនបើទទេ ឬទុកជាមោឃៈ។ portraitlandscape
fix_faces ស្រេចចិត្ត អនុញ្ញាតឱ្យ AI ជួសជុលមុខនៅក្នុងរូបភាពលទ្ធផល តម្លៃមិនពិតគឺជាលំនាំដើមប្រសិនបើមិនផ្ញើ។ truefalse
make_tile ស្រេចចិត្ត កំណត់ true ប្រសិនបើអ្នកចង់បានរូបភាពដែលអាចប្រើជាលំនាំ។ truefalse
upscale ស្រេចចិត្ត AI នឹងបង្ហាញរូបភាពដែលមានទំហំធំជាងមុន។ truefalse
threesixty ស្រេចចិត្ត AI នឹងត្រឡប់រូបភាព 360º។ truefalse

កែសម្រួលរូបភាព

 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" ប្រសិនបើ "លក្ខខណ្ឌ" គឺសម្រាប់មាតិការូបភាពមនុស្សពេញវ័យ truefalse
terms ទាមទារ ប្រាប់ AI អ្វីដែលអ្នកចង់បានដោយផ្អែកលើរូបភាពរបស់អ្នក។ ចានកូនឆ្មា
replacing ស្រេចចិត្ត ប្រាប់ AI ប្រសិនបើអ្នកចង់ជំនួសអ្វីមួយនៅក្នុងរូបភាពរបស់អ្នកដោយផ្អែកលើការជម្រុញរបស់អ្នកខាងលើ ផ្លែឈើនិងដើមផ្លែឈើ
negative_terms ស្រេចចិត្ត ប្រាប់ AI នូវអ្វីដែលគួរត្រូវបានដកចេញ។ ស្ទួន, គូរមុខមិនល្អ, ឈឺ, ម្រាមដៃគូរមិនល្អ, អាក្រក់, ព្រិល, រូបថ្លុក, Disney, ក្រៅស៊ុម, ច្រឹប
fix_faces ស្រេចចិត្ត អនុញ្ញាតឱ្យ AI ជួសជុលមុខនៅក្នុងរូបភាពលទ្ធផល តម្លៃមិនពិតគឺជាលំនាំដើមប្រសិនបើមិនផ្ញើ។ truefalse
outpaint ស្រេចចិត្ត ដោយទទួលបានរូបភាពចាប់ផ្តើម AI អាចបង្កើត "ជុំវិញ" របស់វា truefalse
upscale ស្រេចចិត្ត AI នឹងបង្ហាញរូបភាពដែលមានទំហំធំជាងមុន។ truefalse