Introduction
ImageEditor.ai платформа API'сине кош келиңиз!
Ар бир функция биздин колдонуучуларга ImageEditor.ai системасында AI менен сүрөттөрдү оңой түзүүгө же түзөтүүгө жардам берүү үчүн иштелип чыккан.
API ачкычыңызды алуу үчүн аккаунт бетине өтүңүз.
Демейки Негизги URL
ImageEditor.ai API үчүн демейки базалык URL: <b>https://api.imageeditor.ai/v1/</b>
Эскертүү: коопсуздук максатында, бардык ImageEditor.ai API'лери HTTPS аркылуу гана кызмат кылат.
Авторизация
ImageEditor.ai API колдонуу үчүн сизге каттоо эсебиңизге байланышкан API ачкычы керек болот.
Авторизация мааниси Headers сурамында жөнөтүлүшү керек.
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);
Жооп
/path/to/local/result.jpg
HTTP өтүнүчү
POST /create-image/
Суроо параметрлери
Параметр | Түр | Description | Мисал |
---|---|---|---|
is_sfw | Кошумча | Эгер "шарттар" чоңдорго арналган сүрөттүн мазмуну үчүн болсо "true" коюңуз | true же false |
terms | Талап кылынат | AIга кандай образды жараткыңыз келгенин айтыңыз. | коён мектепке барат, сабатсыз стили тату өнөр |
negative_terms | Кошумча | AIга эмнени алып салуу керектигин айтыңыз. | кайталанма, начар тартылган бет, оорулуу, начар тартылган манжалар, көрксүз, бүдөмүк, мультфильм, дисней, кадрдан тышкары, кесилген |
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": "кайталанма, начар тартылган бет, оорулуу, начар тартылган манжалар, көрксүз, бүдөмүк, мультфильм, дисней, кадрдан тышкары, кесилген",
"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/
Суроо параметрлери
Параметр | Түр | Description | Мисал |
---|---|---|---|
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 |