पिक्सियन इमेज बैकग्राउंड API को हटाएँ

Pixian.AI की इमेज बैकग्राउंड को API से हटाएं और माइग्रेट करें। API पूरी तरह से स्वचालित रूप से और सर्वोत्तम श्रेणी से इमेज से बैकग्राउंड हटा देता है।

API कुंजी प्राप्त करें

जल्दी शुरूवात

एक बिटमैप इमेज पोस्ट करें और एक बैकग्राउंड हटाया गया परिणाम प्राप्त करें:

$ curl https://api.pixian.ai/api/v2/remove-background \
 -u xyz123:[secret] \
 -F image=@example.jpeg \
 -o pixian_result.png
// Requires: org.apache.httpcomponents.client5:httpclient5-fluent

Request request = Request.post("https://api.pixian.ai/api/v2/remove-background")
   .addHeader("Authorization", "Basic cHh4YmJ6Yjk2bjJ3OGFtOltzZWNyZXRd")
   .body(
      MultipartEntityBuilder.create()
         .addBinaryBody("image", new File("example.jpeg")) // TODO: Replace with your image
         // TODO: Add more upload parameters here
         .build()
      );
ClassicHttpResponse response = (ClassicHttpResponse) request.execute().returnResponse();

if (response.getCode() == 200) {
   // Write result to disk, TODO: or wherever you'd like
   try (FileOutputStream out = new FileOutputStream("pixian_result.png")) {
      response.getEntity().writeTo(out);
   }
} else {
   System.out.println("Request Failed: Status: " + response.getCode() + ", Reason: " + response.getReasonPhrase());
}
using (var client = new HttpClient())
using (var form = new MultipartFormDataContent())
{
   client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", "INSERT_API_KEY_HERE");
   form.Add(new ByteArrayContent(File.ReadAllBytes("example.jpeg")), "image", "example.jpeg"); // TODO: Replace with your image
   // TODO: Add more upload parameters here

   var response = client.PostAsync("https://api.pixian.ai/api/v2/remove-background", form).Result;

   if (response.IsSuccessStatusCode)
   {
      // Write result to disk, TODO: or wherever you'd like
      FileStream outStream = new FileStream("pixian_result.png", FileMode.Create, FileAccess.Write, FileShare.None);
      response.Content.CopyToAsync(outStream).ContinueWith((copyTask) => { outStream.Close(); });
   }
   else
   {
       Console.WriteLine("Request Failed: Status: " + response.StatusCode + ", Reason: " + response.ReasonPhrase);
   }
}
// Requires "request" to be installed (see https://www.npmjs.com/package/request)
var request = require('request');
var fs = require('fs');

request.post({
  url: 'https://api.pixian.ai/api/v2/remove-background',
  formData: {
    image: fs.createReadStream('example.jpeg'), // TODO: Replace with your image
    // TODO: Add more upload options here
  },
  auth: {user: 'xyz123', pass: '[secret]'},
  followAllRedirects: true,
  encoding: null
}, function(error, response, body) {
  if (error) {
    console.error('Request failed:', error);
  } else if (!response || response.statusCode != 200) {
    console.error('Error:', response && response.statusCode, body.toString('utf8'));
  } else {
    // Save result
    fs.writeFileSync("pixian_result.png", body);
  }
});
$ch = curl_init('https://api.pixian.ai/api/v2/remove-background');

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER,
    array('Authorization: Basic cHh4YmJ6Yjk2bjJ3OGFtOltzZWNyZXRd'));
curl_setopt($ch, CURLOPT_POSTFIELDS,
    array(
      'image' => curl_file_create('example.jpeg'),
      // TODO: Add more upload options here
    ));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

$data = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 200) {
  // Save result
  file_put_contents("pixian_result.png", $data);
} else {
  echo "Error: " . $data;
}
curl_close($ch);
# Requires "requests" to be installed (see https://pypi.org/project/requests/)
import requests

response = requests.post(
    'https://api.pixian.ai/api/v2/remove-background',
    files={'image': open('example.jpeg', 'rb')},
    data={
        # TODO: Add more upload options here
    },
    auth=('xyz123', '[secret]')
)
if response.status_code == requests.codes.ok:
    # Save result
    with open('pixian_result.png', 'wb') as out:
        out.write(response.content)
else:
    print("Error:", response.status_code, response.text)
# Requires: gem install httpclient
require 'httpclient'

client = HTTPClient.new default_header: {
  "Authorization" => "Basic cHh4YmJ6Yjk2bjJ3OGFtOltzZWNyZXRd"
}

response = client.post("https://api.pixian.ai/api/v2/remove-background", {
  "image" => File.open("example.jpeg", "rb"), # TODO: Replace with your image
  # TODO: Add more upload parameters here
})

if response.status == 200 then
  # Write result to disk, TODO: or wherever you'd like
  File.open("pixian_result.png", 'w') { |file| file.write(response.body) }
else
  puts "Error: Code: " + response.status.to_s + ", Reason: " + response.reason
end
$ curl https://api.pixian.ai/api/v2/remove-background \
 -u xyz123:[secret] \
 -F 'image.url=https://example.com/example.jpeg' \
 -o pixian_result.png
// Requires: org.apache.httpcomponents.client5:httpclient5-fluent

Request request = Request.post("https://api.pixian.ai/api/v2/remove-background")
   .addHeader("Authorization", "Basic cHh4YmJ6Yjk2bjJ3OGFtOltzZWNyZXRd")
   .body(
      MultipartEntityBuilder.create()
         .addTextBody("image.url", "https://example.com/example.jpeg") // TODO: Replace with your image URL
         // TODO: Add more upload parameters here
         .build()
      );
ClassicHttpResponse response = (ClassicHttpResponse) request.execute().returnResponse();

if (response.getCode() == 200) {
   // Write result to disk, TODO: or wherever you'd like
   try (FileOutputStream out = new FileOutputStream("pixian_result.png")) {
      response.getEntity().writeTo(out);
   }
} else {
   System.out.println("Request Failed: Status: " + response.getCode() + ", Reason: " + response.getReasonPhrase());
}
using (var client = new HttpClient())
using (var form = new MultipartFormDataContent())
{
   client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", "INSERT_API_KEY_HERE");
   form.Add(new StringContent("https://example.com/example.jpeg"), "image.url"); // TODO: Replace with your image URL
   // TODO: Add more upload parameters here

   var response = client.PostAsync("https://api.pixian.ai/api/v2/remove-background", form).Result;

   if (response.IsSuccessStatusCode)
   {
      // Write result to disk, TODO: or wherever you'd like
      FileStream outStream = new FileStream("pixian_result.png", FileMode.Create, FileAccess.Write, FileShare.None);
      response.Content.CopyToAsync(outStream).ContinueWith((copyTask) => { outStream.Close(); });
   }
   else
   {
       Console.WriteLine("Request Failed: Status: " + response.StatusCode + ", Reason: " + response.ReasonPhrase);
   }
}
// Requires "request" to be installed (see https://www.npmjs.com/package/request)
var request = require('request');
var fs = require('fs');

request.post({
  url: 'https://api.pixian.ai/api/v2/remove-background',
  formData: {
    'image.url': 'https://example.com/example.jpeg', // TODO: Replace with your image
    // TODO: Add more upload options here
  },
  auth: {user: 'xyz123', pass: '[secret]'},
  followAllRedirects: true,
  encoding: null
}, function(error, response, body) {
  if (error) {
    console.error('Request failed:', error);
  } else if (!response || response.statusCode != 200) {
    console.error('Error:', response && response.statusCode, body.toString('utf8'));
  } else {
    // Save result
    fs.writeFileSync("pixian_result.png", body);
  }
});
$ch = curl_init('https://api.pixian.ai/api/v2/remove-background');

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER,
    array('Authorization: Basic cHh4YmJ6Yjk2bjJ3OGFtOltzZWNyZXRd'));
curl_setopt($ch, CURLOPT_POSTFIELDS,
    array(
      'image.url' => 'https://example.com/example.jpeg',
      // TODO: Add more upload options here
    ));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

$data = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 200) {
  // Save result
  file_put_contents("pixian_result.png", $data);
} else {
  echo "Error: " . $data;
}
curl_close($ch);
# Requires "requests" to be installed (see https://pypi.org/project/requests/)
import requests

response = requests.post(
    'https://api.pixian.ai/api/v2/remove-background',
    data={
        'image.url': 'https://example.com/example.jpeg',
        # TODO: Add more upload options here
    },
    auth=('xyz123', '[secret]')
)
if response.status_code == requests.codes.ok:
    # Save result
    with open('pixian_result.png', 'wb') as out:
        out.write(response.content)
else:
    print("Error:", response.status_code, response.text)
# Requires: gem install httpclient
require 'httpclient'

client = HTTPClient.new default_header: {
  "Authorization" => "Basic cHh4YmJ6Yjk2bjJ3OGFtOltzZWNyZXRd"
}

response = client.post("https://api.pixian.ai/api/v2/remove-background", {
  "image.url" => "https://example.com/example.jpeg", # TODO: Replace with your image URL
  # TODO: Add more upload parameters here
})

if response.status == 200 then
  # Write result to disk, TODO: or wherever you'd like
  File.open("pixian_result.png", 'w') { |file| file.write(response.body) }
else
  puts "Error: Code: " + response.status.to_s + ", Reason: " + response.reason
end

किसी अन्य प्रदाता से माइग्रेट हो रहे हैं? Check out our migration guide

कीमत

API के साथ एकीकृत करना और उसका टैस्ट करना मुफ़्त है, और इसके लिए कोई ख़रीदारी करना ज़रूरी नहीं है।

बनाने के लिए बस test=true का इस्तेमाल करें। आप फ्रंट पेज़ पर इंटरैक्टिव वेब ऐप का इस्तेमाल करके परिणाम की गुणवत्ता का मूल्यांकन कर सकते हैं।

उत्पादन परिणामों के लिए एक क्रेडिट पैक खरीदने की आवश्यकता होती है। कृपया कीमत पेज पर जाएँ।

प्रमाणीकरण और सुरक्षा

API मानक HTTP मूलभूत पहुँच प्रमाणीकरण का इस्तेमाल करता है। API के लिए सभी अनुरोध HTTPS पर किए जाने चाहिए और इसमें उपयोगकर्ता के रूप में API Id और पासवर्ड के रूप में API सीक्रेट के साथ आपके API क्रेडेंशियल शामिल होने चाहिए।

अनुरोधों को सफलतापूर्वक करने के लिए आपकी http क्लायंट लाइब्रेरी को सर्वर नाम सूचना (SNI) का समर्थन करना होगा। यदि आप अजीब हैंडशेक एरर्स का सामना कर रहे हैं, तो इसकी सबसे अधिक संभावना है।

रेट सीमित करना

API का इस्तेमाल उदार छूट सहित और बिना किसी ऊपरी सीमा के साथ दर द्वारा सीमित है।

सामान्य अंत्य-उपयोगकर्ता-संचालित प्रचालन के दौरान आपके द्वारा दर सीमा का सामना करने की आशंका कम है क्योंकि तब इस्तेमाल कम होने लगता है और इस तरह प्रवाहित होता है कि इसे सेवा द्वारा गरिमामय तरीके से संभाल लिया जाता है।

फिर भी, बैच आधारित कामों के लिए हम अधिकतम 5 थ्रेड्स के साथ शुरुआत करने की सलाह देते हैं, फिर प्रत्येक 5 मिनट में 1 नया थ्रेड तब तक जोड़ते रहें, जब तक कि आप समरूपता के वांछित स्तर तक नहीं पहुंच जाते। यदि आपको 100 से अधिक समवर्ती थ्रेड्स की आवश्यकता हो, तो शुरू करने से पहले कृपया संपर्क करें।

यदि आप अत्यधिक अनुरोध प्रस्तुत करते हैं तो आपको 429 Too Many Requests प्रत्युत्तर मिलने शुरू हो जाएंगे। जब भी ऐसा हो तो आपको रैखिक बैक ऑफ लागू करना चाहिए: पहली बार ऐसा प्रत्युत्तर मिलने पर, अगला अनुरोध प्रस्तुत करने तक 5 सेकंड इंतज़ार करें। लगातार दूसरे 429 प्रत्युत्तर पर, अगला अनुरोध प्रस्तुत करने तक 2*5 = 10 सेकंड इंतज़ार करें। तीसरे में 3*5 = 15 सेकंड इंतज़ार करें, इत्यादि।

सफल अनुरोध के बाद आप बैक ऑफ काउंटर रीसेट कर सकते हैं, और आपको बैक-ऑफ को प्रति-थ्रेड के आधार पर लागू करना चाहिए (अर्थात थ्रेड्स को एक दूसरे से स्वतंत्र रूप से काम करना चाहिए)।

समय समाप्ति

जबकि API अनुरोध आम तौर पर सेकंड के भीतर पूरे हो जाते हैं, क्षणिक लोड स्पाइक्स के दौरान लंबे समय तक प्रोसेसिंग का समय का अनुभव करना संभव है।

यह सुनिश्चित करने के लिए कि आपकी क्लाइंट लाइब्रेरी API अनुरोधों को समय से पहले समाप्त नहीं करती है, इसे कम से कम 180 seconds के निष्क्रिय टाइमआउट के साथ कॉन्फ़िगर किया जाना चाहिए।

एरर JSON ऑबजेक्ट

हम API अनुरोध की सफलता या विफलता को इंगित करने के लिए पारंपरिक HTTP स्थितियों का इस्तेमाल करते हैं, और वापस दिए जाने वाले एरर JSON ऑबजेक्ट में महत्वपूर्ण एरर जानकारी शामिल करते हैं।

किसी भी समस्याग्रस्त अनुरोध में हम सदैव एरर JSON ऑबजेक्ट को वापस देने का प्रयास करते हैं। फिर भी, सैद्धांतिक रूप से यह सदैव संभव है कि ऐसी आंतरिक सर्वर विफलताएं हुई हों जो गैर-JSON एरर प्रत्युत्तर का कारण बनती हैं।

विशेषताएं

statusडिबगिंग में सहायता के लिए यहाँ प्रत्युत्तर की HTTP स्थिति दोहराई गई।
codePixian.AI आंतरिक त्रुटि कोड।
messageडिबगिंग में सहायक होने के प्रयोजन से मानव-पठनीय एरर संदेश।

यदि आपके अनुरोध के लिए HTTP स्थिति 200 है, तो एरर रहित JSON ऑबजेक्ट वापस किया जाएगा, और आप आराम से यह मान सकते हैं कि अनुरोध व्यापक रूप से सफल हुआ।

कुछ HTTP क्लायंट लाइब्रेरियों ने 400-599 रेंज में HTTP स्थिति के लिए अपवाद सृजित किया। आपको उन अपवादों को समझने और उन पर उचित रूप से कार्रवाई करने की आवश्यकता होगी।

HTTP Statusअर्थ
200-299

सफलता

400-499

अनुरोध में दी गई जानकारी में समस्या है (जैसे एक मापदंड गायब था)। यह जानने के लिए कि इसे कैसे ठीक किया जाए, कृपया एरर संदेश की समेक्षा करें।

500-599

एक Pixian.AI आंतरिक त्रुटि हुई है। एक क्षण रुकें, फिर प्रयास करें, और यदि समस्या बनी रहती है, तो कृपया हमें ईमेल करें।

उदाहरण एरर प्रत्युत्तर

{
  "error" : {
    "status" : 400,
    "code" : 1006,
    "message" : "Failed to read the supplied image. "
  }
}

डेल्टा PNG फॉर्मेट कम विलंबता और बैंडविड्थ

Pixian.AI को डेल्टा PNG आउटपुट फॉर्मेट देने वाली पहली बैकग्राउंड हटाने वाली सेवा की पेशकश करने पर गर्व है। डेल्टा PNGs एन्कोड करने में तेज़ हैं और नियमित PNGs की तुलना में बहुत छोटी भी है। यह उन्हें मोबाइल ऐप्स जैसे विलंबता और बैंडविड्थ ग्रहणशील एप्लिकेशन के लिए अत्यधिक उपयुक्त बनाता है।

अधिक जानें दायां तीर

बैकग्राउंड हटाएं POST
https://api.pixian.ai/api/v2/remove-background

इमेज से बैकग्राउंड हटाने के लिए, आप मानक HTTP POST फाइल अपलोड करते हैं। ध्यान रखें कि बाइनरी फाइलों को अपलोड करते समय सामग्री-प्रकार को multipart/form-data में होना चाहिएmultipart/form-data

पैरामीटर्स

इनपुट इमेज निम्न प्रकार की होनी ज़रूरी है:


बाइनरी

एक बाइनरी फाइल।


स्ट्रिंग

एक base64-एनकोडिड स्ट्रिंग स्ट्रिंग आकार में अधिक से अधिक 1megabyte हो सकता है।


स्ट्रिंग

लाने और संसाधित करने के लिए एक URL।

.bmp, .gif, .jpeg, .png, or .tiff फाइल होना ज़रूरी है।

अधिकतम इनपुट इमेज का आकार (= चौड़ाई × लंबाई) है 3,20,00,000pixels, जो घटकर max_pixels हो जाती है।


Boolean, डिफ़ॉल्ट: false

यह इंगित करने के लिए कि यह एक परीक्षण इमेज है, true में पास करें।

प्रोडक्शन इमेजिस के लिए false में छोड़ना या गुजरना।

परीक्षण इमेजेस मुफ्त प्रोसेस की जा सकती हैं, परंतु परिणाम में वॉटरमार्क एम्बेडेड होगा।


पूर्णांक, 100 से 25000000, डिफ़ॉल्ट: 25000000

अधिकतम इनपुट इमेज का आकार (= चौड़ाई × लंबाई)। इससे बड़ी इमेज के प्रसंस्करण से पहले उन्हे इस आकार में छोटा कर दिया जाएगा।


फॉर्मैट: '#RRGGBB', उदाहरण: #0055FF

परिणाम पर एप्लाई किया जाने वाला बैकग्राउंड कलर। पारदर्शी बैकग्राउंड को छोड़ना न भूलें।

'#' उपसर्ग शामिल करना याद रखें।


Boolean, डिफ़ॉल्ट: false

चाहे परिणाम को फोरग्राउंड ऑबजैक्ट पर क्रॉप करना हो।

result.margin और result.target_size के साथ हर बार एक अच्छे आकार और केंद्रित परिणाम प्राप्त करने के लिए बहुत उपयोगी है।


फॉर्मेट: '(x.y%|px){1,4}', e.g. 10px 20% 5px 15%, डिफ़ॉल्ट: 0px

परिणाम में जोड़ने के लिए मार्जिन करें।

इसे इस बात की परवाह किए बिना जोड़ा जाता है कि परिणाम फोरग्राउंड में क्रॉप किया गया है या नहीं।

यदि result.target_size निर्दिष्ट है, तो मार्जिन इनसेट है, मतलब कि यह प्रभावी लक्ष्य आकार का विस्तार नहीं करता।

% और px समर्थित इकाइयाँ हैं। यह CSS अर्थ विज्ञान को फॉलो करता है, इसलिए आप इनमें से किसी का भी इस्तेमाल कर सकते हैं:

  • [all]
  • [top/bottom] [left/right]
  • [top] [left/right] [bottom]
  • [top] [right] [bottom] [left]


फॉर्मैट: 'w h', उदाहरण: 1920 1080

पिक्सेल में एक विशिष्ट परिणाम आकार लागू करें। परिणाम को निर्दिष्ट आकार में फिट करने के लिए स्केल किया जाएगा। यदि अतिरिक्त जगह मौजूद है तो वर्टिकल ट्रीटमेंट को नियंत्रित करने के साथ result.vertical_alignment इसे हमेशा क्षैतिज रूप से केंद्रित किया जाता है।


एनुम, डिफ़ॉल्ट: middle

निर्दिष्ट करता है कि result.target_size का इस्तेमाल किए जाने पर अतिरिक्त वर्टिकल स्थान को कैसे आवंटित किया जाए।


एनुम, डिफ़ॉल्ट: auto

आउटपुट का फॉर्मेट। auto की व्याख्या png पारदर्शी परिणामों और jpeg अपारदर्शी परिणामों के लिए की जाती है, अर्थात जब background.color निर्दिष्ट किया गया हो।

delta_png एक एडवांस्ड, तेज़ और अत्यधिक कॉम्पैक्ट फॉर्मेट है जो ख़ास रूप से मोबाइल ऐप्स जैसी कम-विलंबता, बैंडविड्थ-बाधित स्थितियों के लिए उपयोगी होता है। यह बैकग्राउंड को अपूर्ण रूप से काला 0x00000000 और फोरग्राउंड को अपूर्ण रूप से सफेद 0x00FFFFFFके रूप में एन्कोड करता है। अपूर्ण रूप से पारदर्शी पिक्सेल के अपने असली रंग वैल्यूज़ होते हैं। इनपुट इमेज के साथ आप इसका इस्तेमाल पूर्ण परिणाम को फिर से बनाने के लिए कर सकते हैं। Learn more about the Delta PNG format

background.color, result.crop_to_foreground, result.margin, result.target_size, और result.vertical_alignment का इस्तेमाल करते समय delta_png को नजरअंदाज कर दिया जाता है। परिणाम का आकार इनपुट इमेज के समान होना ज़रूरी है, अन्यथा आपका डिकोडिंग फेल हो जाएगा, इसलिए max_pixels इनपुट सिकुड़ने का कारण नहीं होना चाहिए।


पूर्णांक, 1 से 100, डिफ़ॉल्ट: 75

JPEG परिणामों को एन्कोड करते समय इस्तेमाल की जाने वाली गुणवत्ता।

परिणाम हेडर

X-Credits-Charged वास्तविक क्रेडिट्स चार्ज किये गये थे।
X-Credits-Calculated अगर यह एक उत्पादन अनुरोध होता तो गणना किये गये क्रेडिट्स का शुल्क लिया जाता। केवल परीक्षण अनुरोधों के लिए वापस लौटाया गया है।
X-Input-Orientation EXIF ओरिएंटेशन टैग जिससे हमने पढ़ा और इनपुट इमेज पर लागू किया। यह 1 से 8 तक का पूर्णांक मान है, जिसमें दोनों सम्मिलित है। यदि आपकी इमेज लोडिंग लाइब्रेरी EXIF ओरिएंटेशन का समर्थन नहीं करती है तो यह इस्तेमाल करने योग्य है। Read more about EXIF orientation here
X-Input-Size किसी भी आकार संबंधी बाधाएँ लागू होने से पहले, पिक्सेल में इमेज के [width] [height] को डालें।
X-Result-Size पिक्सेल में, परिणाम इमेज का [width] [height]
X-Input-Foreground [top] [left] [width] [height] इनपुट इमेज निर्देशांक में फोरग्राउंड का बाउंडिंग बॉक्स।
X-Result-Foreground [top] [left] [width] [height] परिणाम इमेज निर्देशांक में फोरग्राउंड का बाउंडिंग बॉक्स।

API चेंजलॉग

तारीखबदलें
4 मार्च 2024 टाइमआउट के बारे में अनुभाग जोड़ा गया।
16 जन॰ 2024 त्रुटिदायक JSON ऑब्जैक्ट का दस्तावेज़ीकरण किया गया।
11 जन॰ 2024 अब वास्तव में X-Credits-Charged हेडर लौटा रहा है और परीक्षण अनुरोधों के लिए X-Credits-Calculated हेडर जोड़ा गया है।
13 जून 2023 आसानी से पढ़ने के लिए API को वर्ज़न 2 और पैरामीटर्स को camelCase से snake_case में अपडेट किया गया है। API का पिछला वर्ज़न अप्रचलित है लेकिन अभी भी उपलब्ध है।
3 मई 2023 API मापदंडों का काफी अधिक विस्तार किया गया है।
28 अप्रैल 2023 API के एंडपॉइंट को अपडेट किया गया है।
21 मार्च 2023 प्रारंभिक रिलीज़।
API कुंजी प्राप्त करें