Kirish
ImageEditor.ai platformasi API ga xush kelibsiz!
Har bir xususiyat foydalanuvchilarga ImageEditor.ai tizimida AI yordamida tasvirlarni osonroq yaratish yoki tahrirlashda yordam berish uchun mo'ljallangan.
API kalitingizni olish uchun hisob sahifasiga o'ting.
Standart asosiy URL
ImageEditor.ai API uchun standart asosiy URL: <b>https://api.imageeditor.ai/v1/</b>
Eslatma: xavfsizlik nuqtai nazaridan barcha ImageEditor.ai API’lari faqat HTTPS orqali taqdim etiladi.
Ruxsat
ImageEditor.ai API-dan foydalanish uchun sizga hisobingizga bog‘langan API kaliti kerak bo‘ladi.
Avtorizatsiya qiymati sarlavhalar so'rovida yuborilishi kerak.
Authorization: <api_key>
Tasvirlar yaratish
import requests
import time
import shutil
import json
headers = {"Authorization": "api_key"}
params = {
"terms": "maktabga boradigan quyon, johil uslubdagi tatuirovka san'ati",
"is_sfw": True,
"negative_terms": "dublikat, yomon chizilgan yuz, kasal, yomon chizilgan barmoqlar, xunuk, loyqa, multfilm, disney, ramkadan tashqari, kesilgan",
"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": "maktabga boradigan quyon, johil uslubdagi tatuirovka san'ati",
"is_sfw": true,
"negative_terms": "dublikat, yomon chizilgan yuz, kasal, yomon chizilgan barmoqlar, xunuk, loyqa, multfilm, disney, ramkadan tashqari, kesilgan",
"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'] = 'maktabga boradigan quyon, johil uslubdagi tatuirovka san'ati';
$post_data['is_sfw'] = true;
$post_data['negative_terms'] = 'dublikat, yomon chizilgan yuz, kasal, yomon chizilgan barmoqlar, xunuk, loyqa, multfilm, disney, ramkadan tashqari, kesilgan';
$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": "maktabga boradigan quyon, johil uslubdagi tatuirovka san'ati",
"is_sfw": true,
"negative_terms": "dublikat, yomon chizilgan yuz, kasal, yomon chizilgan barmoqlar, xunuk, loyqa, multfilm, disney, ramkadan tashqari, kesilgan",
"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);
using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json;
class Program
{
static readonly HttpClient client = new HttpClient();
static async Task Main()
{
client.DefaultRequestHeaders.Add("Authorization", "api_key");
// Create image
var content = new StringContent(
JsonConvert.SerializeObject(new
{
terms = "maktabga boradigan quyon, johil uslubdagi tatuirovka san'ati",
is_sfw = true,
negative_terms = "dublikat, yomon chizilgan yuz, kasal, yomon chizilgan barmoqlar, xunuk, loyqa, multfilm, disney, ramkadan tashqari, kesilgan",
dimension = "landscape",
fix_faces = true,
make_tile = false,
upscale = false,
threesixty = false
}),
System.Text.Encoding.UTF8,
"application/json"
);
var response = await client.PostAsync("https://api.imageeditor.ai/v1/create-image/", content);
var result = await response.Content.ReadAsStringAsync();
var data = JsonConvert.DeserializeObject<dynamic>(result);
// Poll for results
bool finished = false;
while (!finished)
{
var pollContent = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("uuid", (string)data.uuid)
});
var pollRes = await client.PostAsync("https://api.imageeditor.ai/v1/results/", pollContent);
var pollResult = await pollRes.Content.ReadAsStringAsync();
var pollData = JsonConvert.DeserializeObject<dynamic>(pollResult);
finished = (bool)pollData.finished;
if (!finished) await Task.Delay(5000);
else Console.WriteLine(pollResult);
}
}
}
Javob
/path/to/local/result.jpg
HTTP so'rovi
POST /create-image/
So'rov parametrlari
| Parametr | Turi | Tavsif | Misol |
|---|---|---|---|
| is_sfw | Ixtiyoriy | Agar “shartlar” kattalar uchun rasm kontenti uchun boʻlsa "true" ni belgilang | true yoki false |
| terms | Majburiy | AIga qanday tasvir yaratmoqchi ekanligingizni ayting. | maktabga boradigan quyon, johil uslubdagi tatuirovka san'ati |
| negative_terms | Ixtiyoriy | AIga nimani istisno qilish kerakligini ayting. | dublikat, yomon chizilgan yuz, kasal, yomon chizilgan barmoqlar, xunuk, loyqa, multfilm, disney, ramkadan tashqari, kesilgan |
| dimension | Ixtiyoriy | Portret yoki landshaft tasvirlarini oling, agar bo'sh yoki null bo'lsa, "portret" qiymati standart hisoblanadi. | portrait yoki landscape |
| fix_faces | Ixtiyoriy | AIga natija tasvirlaridagi yuzlarni tuzatishga ruxsat bering, agar yuborilmasa, noto'g'ri qiymat sukut bo'ladi. | true yoki false |
| make_tile | Ixtiyoriy | Naqsh sifatida ishlatilishi mumkin bo'lgan rasmni istasangiz, true o'rnating. | true yoki false |
| upscale | Ixtiyoriy | AI kattaroq o'lchamdagi tasvirni qaytaradi. | true yoki false |
| threesixty | Ixtiyoriy | AI 360º tasvirni qaytaradi. | true yoki false |
Tasvirlarni tahrirlash
import requests
import time
import shutil
import json
headers = {"Authorization": "api_key"}
params = {
"terms": "Bir piyola mushukchalar",
"is_sfw": True,
"replacing": "meva va meva poyasi",
"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))
Tasvirlarni tahrirlash
curl -X POST \
https://api.imageeditor.ai/v1/edit-image/ \
-H 'Authorization: api_key' \
-F 'files=@test_files/test.jpeg' \
-F 'terms=Bir piyola mushukchalar' \
-F 'is_sfw=true' \
-F 'replacing=meva va meva poyasi' \
-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'] = 'maktabga boradigan quyon, johil uslubdagi tatuirovka san'ati';
$post_data['is_sfw'] = true;
$post_data['replacing'] = 'meva va meva poyasi';
$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": "maktabga boradigan quyon, johil uslubdagi tatuirovka san'ati",
"is_sfw": true,
"negative_terms": "dublikat, yomon chizilgan yuz, kasal, yomon chizilgan barmoqlar, xunuk, loyqa, multfilm, disney, ramkadan tashqari, kesilgan",
"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);
using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json;
class Program
{
static readonly HttpClient client = new HttpClient();
static async Task Main()
{
client.DefaultRequestHeaders.Add("Authorization", "api_key");
// Edit image with file upload
var form = new MultipartFormDataContent();
form.Add(new StringContent("Bir piyola mushukchalar"), "terms");
form.Add(new StringContent("true"), "is_sfw");
form.Add(new StringContent("meva va meva poyasi"), "replacing");
form.Add(new StringContent(""), "negative_terms");
form.Add(new StringContent("true"), "fix_faces");
form.Add(new StringContent("false"), "outpaint");
form.Add(new StringContent("false"), "upscale");
form.Add(new ByteArrayContent(File.ReadAllBytes("test.jpeg")), "files", "test.jpeg");
var response = await client.PostAsync("https://api.imageeditor.ai/v1/edit-image/", form);
var result = await response.Content.ReadAsStringAsync();
var data = JsonConvert.DeserializeObject<dynamic>(result);
// Poll for results
bool finished = false;
while (!finished)
{
var pollContent = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("uuid", (string)data.uuid)
});
var pollRes = await client.PostAsync("https://api.imageeditor.ai/v1/results/", pollContent);
var pollResult = await pollRes.Content.ReadAsStringAsync();
var pollData = JsonConvert.DeserializeObject<dynamic>(pollResult);
finished = (bool)pollData.finished;
if (!finished) await Task.Delay(5000);
else Console.WriteLine(pollResult);
}
}
}
Javob
/path/to/local/result.jpg
HTTP so'rovi
POST /edit-image/
So'rov parametrlari
| Parametr | Turi | Tavsif | Misol |
|---|---|---|---|
| is_sfw | Ixtiyoriy | Agar “shartlar” kattalar uchun rasm kontenti uchun boʻlsa "true" ni belgilang | true yoki false |
| terms | Majburiy | Tasviringiz asosida AIga nima istayotganingizni ayting. | Bir piyola mushukchalar |
| replacing | Ixtiyoriy | Yuqoridagi ko'rsatma asosida tasviringizdagi biror narsani almashtirmoqchi bo'lsangiz, AIga ayting | meva va meva poyasi |
| negative_terms | Ixtiyoriy | AIga nimani istisno qilish kerakligini ayting. | dublikat, yomon chizilgan yuz, kasal, yomon chizilgan barmoqlar, xunuk, loyqa, multfilm, disney, ramkadan tashqari, kesilgan |
| fix_faces | Ixtiyoriy | AIga natija tasvirlaridagi yuzlarni tuzatishga ruxsat bering, agar yuborilmasa, noto'g'ri qiymat sukut bo'ladi. | true yoki false |
| outpaint | Ixtiyoriy | Boshlang'ich tasvirni hisobga olgan holda, AI uning "atrofini" yaratishi mumkin | true yoki false |
| upscale | Ixtiyoriy | AI kattaroq o'lchamdagi tasvirni qaytaradi. | true yoki false |