Εισαγωγή
Καλώς ήρθατε στο API της πλατφόρμας ImageEditor.ai!
Κάθε δυνατότητα έχει σχεδιαστεί για να βοηθά τους χρήστες μας να δημιουργούν ή να επεξεργάζονται πιο εύκολα εικόνες με 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": "διπλότυπο, κακοσχεδιασμένο πρόσωπο, νοσηρό, κακοσχεδιασμένα δάχτυλα, άσχημο, θολή, κινούμενα σχέδια, 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" εάν οι "όροι" αφορούν περιεχόμενο εικόνας για ενηλίκους | true ή false |
terms | Απαιτείται | Πείτε στο AI ποια εικόνα θέλετε να δημιουργήσετε. | κουνέλι πηγαίνει στο σχολείο, τέχνη τατουάζ αδαούς στυλ |
negative_terms | Προαιρετικός | Πείτε στην τεχνητή νοημοσύνη τι πρέπει να εξαιρεθεί. | διπλότυπο, κακοσχεδιασμένο πρόσωπο, νοσηρό, κακοσχεδιασμένα δάχτυλα, άσχημο, θολή, κινούμενα σχέδια, disney, εκτός κάδρου, περικομμένο |
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": "διπλότυπο, κακοσχεδιασμένο πρόσωπο, νοσηρό, κακοσχεδιασμένα δάχτυλα, άσχημο, θολή, κινούμενα σχέδια, 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" εάν οι "όροι" αφορούν περιεχόμενο εικόνας για ενηλίκους | true ή false |
terms | Απαιτείται | Πείτε στο AI τι θέλετε με βάση την εικόνα σας. | Μπολ με γατάκια |
replacing | Προαιρετικός | Ενημερώστε την τεχνητή νοημοσύνη εάν θέλετε να αντικαταστήσετε κάτι στην εικόνα σας με βάση την παραπάνω προτροπή | φρούτα και στέλεχος φρούτων |
negative_terms | Προαιρετικός | Πείτε στην τεχνητή νοημοσύνη τι πρέπει να εξαιρεθεί. | διπλότυπο, κακοσχεδιασμένο πρόσωπο, νοσηρό, κακοσχεδιασμένα δάχτυλα, άσχημο, θολή, κινούμενα σχέδια, disney, εκτός κάδρου, περικομμένο |
fix_faces | Προαιρετικός | Αφήστε το AI να διορθώσει πρόσωπα στις εικόνες των αποτελεσμάτων, η τιμή False είναι προεπιλεγμένη εάν δεν αποσταλεί. | true ή false |
outpaint | Προαιρετικός | Με δεδομένη την αρχική εικόνα, η τεχνητή νοημοσύνη μπορεί να δημιουργήσει το "περιβάλλον" της | true ή false |
upscale | Προαιρετικός | Το AI θα επιστρέψει μια εικόνα μεγαλύτερης κλίμακας. | true ή false |