مقدمة
مرحبًا بك في واجهة برمجة تطبيقات منصة ImageEditor.ai!
تم تصميم كل ميزة لمساعدة مستخدمينا بسهولة أكبر في إنشاء الصور أو تحريرها باستخدام AI على نظام ImageEditor.ai.
للحصول على مفتاح API الخاص بك يرجى الذهاب إلى صفحة الحساب .
URL الأساسي الافتراضي
عنوان URL الأساسي الافتراضي لـ ImageEditor.ai API هو: <b>https://api.imageeditor.ai/v1/</b>
ملاحظة: لأسباب أمنية ، يتم تقديم جميع واجهات برمجة تطبيقات ImageEditor.ai عبر HTTPS فقط.
تفويض
لاستخدام ImageEditor.ai 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);
إجابة
/path/to/local/result.jpg
طلب HTTP
POST /create-image/
معلمات الاستعلام
معامل | يكتب | وصف | مثال |
---|---|---|---|
is_sfw | خياري | عيّن "true" إذا كانت "المصطلحات" تتعلق بمحتوى صور للبالغين | true أو false |
terms | مطلوب | أخبر الذكاء الاصطناعي بالصورة التي تريد إنشاءها. | أرنب يذهب إلى المدرسة فن الوشم على غرار الجاهل |
negative_terms | خياري | أخبر الذكاء الاصطناعي بما يجب استبعاده. | مكرر ، وجه مرسوم بشكل سيئ ، مهووس ، أصابع مرسومة بشكل سيء ، قبيح ، ضبابي ، رسوم متحركة ، ديزني ، خارج الإطار ، اقتصاص |
dimension | خياري | احصل على صور عمودية أو أفقية ، تكون القيمة "الرأسية" هي القيمة الافتراضية إذا كانت فارغة أو خالية. | portrait أو landscape |
fix_faces | خياري | اسمح للذكاء الاصطناعي بإصلاح الوجوه في الصور الناتجة ، فالقيمة False هي الافتراضية إذا لم يتم إرسالها. | true أو false |
make_tile | خياري | اضبط true إذا كنت تريد صورة يمكن استخدامها كنمط. | true أو false |
upscale | خياري | سيعيد الذكاء الاصطناعي صورة أكبر حجمًا. | true أو false |
threesixty | خياري | سيعيد الذكاء الاصطناعي صورة 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/
معلمات الاستعلام
معامل | يكتب | وصف | مثال |
---|---|---|---|
is_sfw | خياري | عيّن "true" إذا كانت "المصطلحات" تتعلق بمحتوى صور للبالغين | true أو false |
terms | مطلوب | أخبر الذكاء الاصطناعي بما تريده بناءً على صورتك. | وعاء القطط |
replacing | خياري | أخبر منظمة العفو الدولية إذا كنت تريد استبدال شيء ما في صورتك بناءً على الموجه أعلاه | الفاكهة وجذع الفاكهة |
negative_terms | خياري | أخبر الذكاء الاصطناعي بما يجب استبعاده. | مكرر ، وجه مرسوم بشكل سيئ ، مهووس ، أصابع مرسومة بشكل سيء ، قبيح ، ضبابي ، رسوم متحركة ، ديزني ، خارج الإطار ، اقتصاص |
fix_faces | خياري | اسمح للذكاء الاصطناعي بإصلاح الوجوه في الصور الناتجة ، فالقيمة False هي الافتراضية إذا لم يتم إرسالها. | true أو false |
outpaint | خياري | بالنظر إلى صورة البداية ، يمكن للذكاء الاصطناعي أن يولد محيطه " | true أو false |
upscale | خياري | سيعيد الذكاء الاصطناعي صورة أكبر حجمًا. | true أو false |