Enkonduko
Bonvenon al la API de la platformo ImageEditor.ai!
Ĉiu funkcio estas desegnita por helpi niajn uzantojn pli facile krei aŭ redakti bildojn per AI en la sistemo de ImageEditor.ai.
Por akiri vian API-ŝlosilon bonvolu iri al konta paĝo .
Defaŭlta Baza URL
La defaŭlta baza URL por ImageEditor.ai API estas: <b>https://api.imageeditor.ai/v1/</b>
Noto: pro sekurecaj kialoj, ĉiuj ImageEditor.ai-API-oj estas servataj nur per HTTPS.
Rajtigo
Por uzi la API de ImageEditor.ai, vi bezonos la API-ŝlosilon, kiu estas ligita al via konto .
La rajtigvaloro devus esti sendita en Kapoj-peto.
Authorization: <api_key>
Krei bildojn
import requests
import time
import shutil
import json
headers = {"Authorization": "api_key"}
params = {
"terms": "kuniklo iranta al lernejo, malklera stilo tatuarto",
"is_sfw": True,
"negative_terms": "duobligita, malbone desegnita vizaĝo, malsana, malbone desegnita fingroj, malbela, malklara, bildstrio, disney, eksterkadra, tondigita",
"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": "kuniklo iranta al lernejo, malklera stilo tatuarto",
"is_sfw": true,
"negative_terms": "duobligita, malbone desegnita vizaĝo, malsana, malbone desegnita fingroj, malbela, malklara, bildstrio, disney, eksterkadra, tondigita",
"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'] = 'kuniklo iranta al lernejo, malklera stilo tatuarto';
$post_data['is_sfw'] = true;
$post_data['negative_terms'] = 'duobligita, malbone desegnita vizaĝo, malsana, malbone desegnita fingroj, malbela, malklara, bildstrio, disney, eksterkadra, tondigita';
$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": "kuniklo iranta al lernejo, malklera stilo tatuarto",
"is_sfw": true,
"negative_terms": "duobligita, malbone desegnita vizaĝo, malsana, malbone desegnita fingroj, malbela, malklara, bildstrio, disney, eksterkadra, tondigita",
"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);
Respondo
/path/to/local/result.jpg
HTTP-Peto
POST /create-image/
Demandaj parametroj
Parametro | Tajpu | Priskribo | Ekzemplo |
---|---|---|---|
is_sfw | Laŭvola | Agordu "true" se la "kondiĉoj" estas por plenkreska bildenhavo | true aŭ false |
terms | Bezonata | Diru al la AI kiun bildon vi volas krei. | kuniklo iranta al lernejo, malklera stilo tatuarto |
negative_terms | Laŭvola | Diru al la AI, kio devus esti ekskludita. | duobligita, malbone desegnita vizaĝo, malsana, malbone desegnita fingroj, malbela, malklara, bildstrio, disney, eksterkadra, tondigita |
dimension | Laŭvola | Akiru portretajn aŭ pejzaĝajn bildojn, "portreto" valoro estas defaŭlta se malplena aŭ nula. | portrait aŭ landscape |
fix_faces | Laŭvola | Lasu la AI ripari vizaĝojn en la rezultaj bildoj, Falsa valoro estas defaŭlta se ne sendas. | true aŭ false |
make_tile | Laŭvola | Agordu true se vi volas bildon, kiu povas esti uzata kiel ŝablono. | true aŭ false |
upscale | Laŭvola | La AI resendos pli grandan pligrandigitan bildon. | true aŭ false |
threesixty | Laŭvola | La AI resendos 360º-bildon. | true aŭ false |
Redaktu bildojn
import requests
import time
import shutil
import json
headers = {"Authorization": "api_key"}
params = {
"terms": "Bovlo da katidoj",
"is_sfw": True,
"replacing": "fruktoj kaj frukto tigo",
"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))
Redaktu bildojn
curl -X POST \
https://api.imageeditor.ai/v1/edit-image/ \
-H 'Authorization: api_key' \
-F 'files=@test_files/test.jpeg' \
-F 'terms=Bovlo da katidoj' \
-F 'is_sfw=true' \
-F 'replacing=fruktoj kaj frukto tigo' \
-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'] = 'kuniklo iranta al lernejo, malklera stilo tatuarto';
$post_data['is_sfw'] = true;
$post_data['replacing'] = 'fruktoj kaj frukto tigo';
$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": "kuniklo iranta al lernejo, malklera stilo tatuarto",
"is_sfw": true,
"negative_terms": "duobligita, malbone desegnita vizaĝo, malsana, malbone desegnita fingroj, malbela, malklara, bildstrio, disney, eksterkadra, tondigita",
"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);
Respondo
/path/to/local/result.jpg
HTTP-Peto
POST /edit-image/
Demandaj parametroj
Parametro | Tajpu | Priskribo | Ekzemplo |
---|---|---|---|
is_sfw | Laŭvola | Agordu "true" se la "kondiĉoj" estas por plenkreska bildenhavo | true aŭ false |
terms | Bezonata | Diru al la AI, kion vi volas laŭ via bildo. | Bovlo da katidoj |
replacing | Laŭvola | Diru al la AI se vi volas anstataŭigi ion en via bildo surbaze de via instigo supre | fruktoj kaj frukto tigo |
negative_terms | Laŭvola | Diru al la AI, kio devus esti ekskludita. | duobligita, malbone desegnita vizaĝo, malsana, malbone desegnita fingroj, malbela, malklara, bildstrio, disney, eksterkadra, tondigita |
fix_faces | Laŭvola | Lasu la AI ripari vizaĝojn en la rezultaj bildoj, Falsa valoro estas defaŭlta se ne sendas. | true aŭ false |
outpaint | Laŭvola | Donita komenca bildo, la AI povas generi ĝian "ĉirkaŭaĵon" | true aŭ false |
upscale | Laŭvola | La AI resendos pli grandan pligrandigitan bildon. | true aŭ false |