Giới thiệu
Chào mừng bạn đến với API nền tảng ImageEditor.ai!
Mỗi tính năng được thiết kế để giúp người dùng của chúng tôi tạo hoặc chỉnh sửa hình ảnh dễ dàng hơn bằng AI trên hệ thống ImageEditor.ai".
Để lấy khóa API của bạn, vui lòng truy cập trang tài khoản .
URL cơ sở mặc định
URL cơ sở mặc định cho API ImageEditor.ai là: <b>https://api.imageeditor.ai/v1/</b>
Lưu ý: vì lý do bảo mật, tất cả API ImageEditor.ai chỉ được cung cấp qua HTTPS.
ủy quyền
Để sử dụng API ImageEditor.ai, bạn sẽ cần khóa API được liên kết với tài khoản của mình .
Giá trị ủy quyền phải được gửi trong yêu cầu Tiêu đề.
Authorization: <api_key>
Tạo hình ảnh
import requests
import time
import shutil
import json
headers = {"Authorization": "api_key"}
params = {
"terms": "thỏ đi học nghệ thuật xăm phong cách ngu dốt",
"is_sfw": True,
"negative_terms": "bản sao, khuôn mặt vẽ xấu, bệnh tật, ngón tay vẽ kém, xấu xí, mờ, hoạt hình, disney, ngoài khung hình, cắt xén",
"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": "thỏ đi học nghệ thuật xăm phong cách ngu dốt",
"is_sfw": true,
"negative_terms": "bản sao, khuôn mặt vẽ xấu, bệnh tật, ngón tay vẽ kém, xấu xí, mờ, hoạt hình, disney, ngoài khung hình, cắt xén",
"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'] = 'thỏ đi học nghệ thuật xăm phong cách ngu dốt';
$post_data['is_sfw'] = true;
$post_data['negative_terms'] = 'bản sao, khuôn mặt vẽ xấu, bệnh tật, ngón tay vẽ kém, xấu xí, mờ, hoạt hình, disney, ngoài khung hình, cắt xén';
$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": "thỏ đi học nghệ thuật xăm phong cách ngu dốt",
"is_sfw": true,
"negative_terms": "bản sao, khuôn mặt vẽ xấu, bệnh tật, ngón tay vẽ kém, xấu xí, mờ, hoạt hình, disney, ngoài khung hình, cắt xén",
"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);
Phản ứng
/path/to/local/result.jpg
Yêu cầu HTTP
POST /create-image/
Tham số truy vấn
Tham số | Kiểu | Sự miêu tả | Ví dụ |
---|---|---|---|
is_sfw | Không bắt buộc | Đặt "true" nếu "điều khoản" dành cho nội dung hình ảnh người lớn | true hoặc false |
terms | Yêu cầu | Cho AI biết bạn muốn tạo hình ảnh gì. | thỏ đi học nghệ thuật xăm phong cách ngu dốt |
negative_terms | Không bắt buộc | Nói với AI những gì nên được loại trừ. | bản sao, khuôn mặt vẽ xấu, bệnh tật, ngón tay vẽ kém, xấu xí, mờ, hoạt hình, disney, ngoài khung hình, cắt xén |
dimension | Không bắt buộc | Nhận hình ảnh dọc hoặc ngang, giá trị "dọc" là mặc định nếu trống hoặc rỗng. | portrait hoặc landscape |
fix_faces | Không bắt buộc | Hãy để AI sửa khuôn mặt trong ảnh kết quả, giá trị Sai là mặc định nếu không gửi. | true hoặc false |
make_tile | Không bắt buộc | Đặt true nếu bạn muốn một hình ảnh có thể được sử dụng làm mẫu. | true hoặc false |
upscale | Không bắt buộc | AI sẽ trả về một hình ảnh được phóng to hơn. | true hoặc false |
threesixty | Không bắt buộc | AI sẽ trả về hình ảnh 360º. | true hoặc false |
Chỉnh sửa hình ảnh
import requests
import time
import shutil
import json
headers = {"Authorization": "api_key"}
params = {
"terms": "Bát mèo con",
"is_sfw": True,
"replacing": "quả và cuống quả",
"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))
Chỉnh sửa hình ảnh
curl -X POST \
https://api.imageeditor.ai/v1/edit-image/ \
-H 'Authorization: api_key' \
-F 'files=@test_files/test.jpeg' \
-F 'terms=Bát mèo con' \
-F 'is_sfw=true' \
-F 'replacing=quả và cuống quả' \
-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'] = 'thỏ đi học nghệ thuật xăm phong cách ngu dốt';
$post_data['is_sfw'] = true;
$post_data['replacing'] = 'quả và cuống quả';
$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": "thỏ đi học nghệ thuật xăm phong cách ngu dốt",
"is_sfw": true,
"negative_terms": "bản sao, khuôn mặt vẽ xấu, bệnh tật, ngón tay vẽ kém, xấu xí, mờ, hoạt hình, disney, ngoài khung hình, cắt xén",
"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);
Phản ứng
/path/to/local/result.jpg
Yêu cầu HTTP
POST /edit-image/
Tham số truy vấn
Tham số | Kiểu | Sự miêu tả | Ví dụ |
---|---|---|---|
is_sfw | Không bắt buộc | Đặt "true" nếu "điều khoản" dành cho nội dung hình ảnh người lớn | true hoặc false |
terms | Yêu cầu | Cho AI biết bạn muốn gì dựa trên hình ảnh của bạn. | Bát mèo con |
replacing | Không bắt buộc | Nói với AI nếu bạn muốn thay thế thứ gì đó trong hình ảnh của mình dựa trên lời nhắc của bạn ở trên | quả và cuống quả |
negative_terms | Không bắt buộc | Nói với AI những gì nên được loại trừ. | bản sao, khuôn mặt vẽ xấu, bệnh tật, ngón tay vẽ kém, xấu xí, mờ, hoạt hình, disney, ngoài khung hình, cắt xén |
fix_faces | Không bắt buộc | Hãy để AI sửa khuôn mặt trong ảnh kết quả, giá trị Sai là mặc định nếu không gửi. | true hoặc false |
outpaint | Không bắt buộc | Đưa ra một hình ảnh bắt đầu, AI có thể tạo ra "xung quanh" của nó | true hoặc false |
upscale | Không bắt buộc | AI sẽ trả về một hình ảnh được phóng to hơn. | true hoặc false |