API क्विक एडीटर

ऑटो क्लिप

एक इमेज अपलोड करें और क्लिप किया हुआ परिणाम प्राप्त करें:

$ curl https://hi.clippingmagic.com/api/v1/images \
 -u 123:[secret] \
 -F 'image=@example.jpeg' \
 -F 'format=result' \
 -F 'test=true' -o clipped.png
# Requires "requests" to be installed (see python-requests.org)
import requests

response = requests.post(
    'https://hi.clippingmagic.com/api/v1/images',
    files={'image': open('example.jpeg', 'rb')},
    data={
        'format': 'result',
        'test': 'true' # TODO: Remove for production
        # TODO: Add more upload options here
    },
    headers={
        'Authorization':
        'Basic MTIzOltzZWNyZXRd'
    },
)
if response.status_code == requests.codes.ok:
    # Store these if you want to be able to use the Smart Editor
    image_id = response.headers['x-amz-meta-id']
    image_secret = response.headers['x-amz-meta-secret']

    with open('clipped.png', 'wb') as out:
        out.write(response.content)
else:
    print("Error:", response.status_code, response.text)
// Requires "request" to be installed (see https://www.npmjs.com/package/request)
var request = require('request');
var fs = require('fs');

request.post({
  url: 'https://hi.clippingmagic.com/api/v1/images',
  formData: {
    image: fs.createReadStream('example.jpeg'), // TODO: Replace with your image
    format: 'result',
    test: 'true', // TODO: Remove for production
    // TODO: Add more upload options here
  },
  auth: {user: '123', 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 {
    // Store these if you want to be able to use the Smart Editor
    let imageId = response.caseless.get('x-amz-meta-id');
    let imageSecret = response.caseless.get('x-amz-meta-secret');

    // Save result
    fs.writeFileSync("clipped.png", body);
  }
});
$ curl https://hi.clippingmagic.com/api/v1/images \
 -u 123:[secret] \
 -F 'image.url=https://example.com/example.jpeg' \
 -F 'format=result' \
 -F 'test=true' -o clipped.png
# Requires "requests" to be installed (see python-requests.org)
import requests

response = requests.post(
    'https://hi.clippingmagic.com/api/v1/images',
    data={
        'image.url': 'https://example.com/example.jpeg',
        'format': 'result',
        'test': 'true' # TODO: Remove for production
        # TODO: Add more upload options here
    },
    headers={
        'Authorization':
        'Basic MTIzOltzZWNyZXRd'
    },
)
if response.status_code == requests.codes.ok:
    # Store these if you want to be able to use the Smart Editor
    image_id = response.headers['x-amz-meta-id']
    image_secret = response.headers['x-amz-meta-secret']

    with open('clipped.png', 'wb') as out:
        out.write(response.content)
else:
    print("Error:", response.status_code, response.text)
// Requires "request" to be installed (see https://www.npmjs.com/package/request)
var request = require('request');
var fs = require('fs');

request.post({
  url: 'https://hi.clippingmagic.com/api/v1/images',
  formData: {
    'image.url': 'https://example.com/example.jpeg', // TODO: Replace with your image
    format: 'result',
    test: 'true', // TODO: Remove for production
    // TODO: Add more upload options here
  },
  auth: {user: '123', 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 {
    // Store these if you want to be able to use the Smart Editor
    let imageId = response.caseless.get('x-amz-meta-id');
    let imageSecret = response.caseless.get('x-amz-meta-secret');

    // Save result
    fs.writeFileSync("clipped.png", body);
  }
});

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

यदि आप id और secret को सेव करते हैं, तो आप परिणाम की समीक्षा करने के बाद भी होस्ट किए गए या व्हाइट लेबल संपादक का उपयोग कर सकते हैं।

Your Server Image Background Removed CM API

होस्ट किया गया एडीटर

प्रचालन का सिद्धांत

  1. एक इमेज अपलोड करें और इमेज की पहचान करते id और secret को प्राप्त करें।

  2. अपने मानव ऑपरेटर के लिए अपनी साइट पर एक रिटर्न URL एंडपॉइंट बनाएँ, जब वे कर चुके हों।

  3. id, secret का इस्तेमाल करें और इमेज को क्लिप करने के लिए अपने मानव ऑपरेटर के लिए होस्टेड एडिटर URL बनाने के लिए URL लौटाएँ।

  4. आपका मानव ऑपरेटर होस्टेड एडिटर URL तक जाता है और इमेज को क्लिप करता है।

  5. जब आपका मानव ऑपरेटर काम कर लेता है तो उनका ब्राउज़र आपके रिटर्न URL पर HTTP POST इशु करता है clippingMagicJson पैरामीटर को पार्स करें और नये उपलब्ध परिणामों को डाउनलोड करें।

एक इमेज अपलोड करें और होस्टेड एडिटर URL बनाएँ

# Requires "requests" to be installed (see python-requests.org)
import requests
import json
from urllib.parse import quote # Python 3, urllib.quote for Python 2

response = requests.post(
    'https://hi.clippingmagic.com/api/v1/images',
    files={'image': open('example.jpeg', 'rb')},
    data={
        'format': 'json',
        'test': 'true' # TODO: Remove for production
        # TODO: Add more upload options here
    },
    headers={
        'Authorization':
        'Basic MTIzOltzZWNyZXRd'
    },
)
if response.status_code == requests.codes.ok:
    r = json.loads(response.content)

    # TODO: Store these
    imageId = r["image"]["id"];
    imageSecret = r["image"]["secret"];
    print("Result", r, imageId, imageSecret);

    # Create Hosted Editor URL
    returnUrl = 'https://hi.clippingmagic.com/api/returnUrlExample' # TODO: Replace with your own
    hostedEditorUrl = 'https://hi.clippingmagic.com/api/v1/hosted/123' + \
      '?images=' + str(imageId) + ':' + imageSecret + \
      '&returnUrl=' + quote(returnUrl)
    print("Hosted Editor URL", hostedEditorUrl)

else:
    print("Error:", response.status_code, response.text)
// Requires "request" to be installed (see https://www.npmjs.com/package/request)
var request = require('request');
var fs = require('fs');

request.post({
  url: 'https://hi.clippingmagic.com/api/v1/images',
  formData: {
    image: fs.createReadStream('example.jpeg'), // TODO: Replace with your image
    format: 'json',
    test: 'true', // TODO: Remove for production
    // TODO: Add more upload options here
  },
  auth: {user: '123', pass: '[secret]'},
}, 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 {
    let r = JSON.parse(body);

    // TODO: Store these
    let imageId = r.image.id;
    let imageSecret = r.image.secret;
    console.log("Result", r, imageId, imageSecret);

    // Create Hosted Editor URL
    let returnUrl = 'https://hi.clippingmagic.com/api/returnUrlExample'; // TODO: Replace with your own
    let hostedEditorUrl = 'https://hi.clippingmagic.com/api/v1/hosted/123' +
      '?images=' + imageId + ':' + imageSecret +
      '&returnUrl=' + encodeURIComponent(returnUrl);
    console.log("Hosted Editor URL", hostedEditorUrl);

  }
});
# Requires "requests" to be installed (see python-requests.org)
import requests
import json
from urllib.parse import quote # Python 3, urllib.quote for Python 2

response = requests.post(
    'https://hi.clippingmagic.com/api/v1/images',
    data={
        'image.url': 'https://example.com/example.jpeg',
        'format': 'json',
        'test': 'true' # TODO: Remove for production
        # TODO: Add more upload options here
    },
    headers={
        'Authorization':
        'Basic MTIzOltzZWNyZXRd'
    },
)
if response.status_code == requests.codes.ok:
    r = json.loads(response.content)

    # TODO: Store these
    imageId = r["image"]["id"];
    imageSecret = r["image"]["secret"];
    print("Result", r, imageId, imageSecret);

    # Create Hosted Editor URL
    returnUrl = 'https://hi.clippingmagic.com/api/returnUrlExample' # TODO: Replace with your own
    hostedEditorUrl = 'https://hi.clippingmagic.com/api/v1/hosted/123' + \
      '?images=' + str(imageId) + ':' + imageSecret + \
      '&returnUrl=' + quote(returnUrl)
    print("Hosted Editor URL", hostedEditorUrl)

else:
    print("Error:", response.status_code, response.text)
// Requires "request" to be installed (see https://www.npmjs.com/package/request)
var request = require('request');
var fs = require('fs');

request.post({
  url: 'https://hi.clippingmagic.com/api/v1/images',
  formData: {
    'image.url': 'https://example.com/example.jpeg', // TODO: Replace with your image
    format: 'json',
    test: 'true', // TODO: Remove for production
    // TODO: Add more upload options here
  },
  auth: {user: '123', pass: '[secret]'},
}, 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 {
    let r = JSON.parse(body);

    // TODO: Store these
    let imageId = r.image.id;
    let imageSecret = r.image.secret;
    console.log("Result", r, imageId, imageSecret);

    // Create Hosted Editor URL
    let returnUrl = 'https://hi.clippingmagic.com/api/returnUrlExample'; // TODO: Replace with your own
    let hostedEditorUrl = 'https://hi.clippingmagic.com/api/v1/hosted/123' +
      '?images=' + imageId + ':' + imageSecret +
      '&returnUrl=' + encodeURIComponent(returnUrl);
    console.log("Hosted Editor URL", hostedEditorUrl);

  }
});

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

पूरी गहराई से जानकारी के लिए पूरी होस्टेड एडिटर दस्तावेज़ों को देखें।

Your Server Image JSON id + secret CM API Clip Image POST Return URL Hosted Editor URL Fetch Image Background Removed Human Operator clippingmagic.com

रिटर्न URL हैंडलर बनाएं

जब आपका मानव ऑपरेटर काम कर लेता है तो उनका ब्राउज़र आपके रिटर्न URL पर HTTP POST इशु करता है clippingMagicJson पैरामीटर को पार्स करें और नये उपलब्ध परिणामों को डाउनलोड करें।

from flask import Flask, request
import requests
import json

app = Flask(__name__)

@app.route('/cmReturnUrl', methods=['POST'])
def cmReturnUrl():
    cm = json.loads(request.form['clippingMagicJson'])
    if cm["event"] == 'editor-exit':
        for im in cm["clipped"]:
            response = requests.get('https://hi.clippingmagic.com/api/v1/images/' + str(im["id"]), headers={
                'Authorization': 'Basic MTIzOltzZWNyZXRd'})
            if response.status_code == requests.codes.ok:
                with open('clipped-' + str(im["id"]) + '.png', 'wb') as out:
                    out.write(response.content)
            else:
                print("Error " + str(im["id"]) + ": ", response.status_code, response.text)
        # TODO: Handle cm["skipped"] images
    elif cm["event"] == 'error':
        print("Error: ", cm["error"]["code"], cm["error"]["message"])
    return ''
// Using the ExpressJS framework:
var express = require('express');
var bodyParser = require('body-parser');
var request = require('request');
var fs = require('fs');
var app = express();
app.use(bodyParser.urlencoded({ extended: true }));
var port = process.env.PORT || 8080;

app.post('/cmReturnUrl', function(req, res) {
    let cm = JSON.parse(req.body.clippingMagicJson);
    switch (cm.event) {
      case "editor-exit":
        for (let im of cm.clipped) {
          request.get({
            url: 'https://hi.clippingmagic.com/api/v1/images/' + im.id,
            auth: {user: '123', pass: '[secret]'},
            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("clipped-" + im.id + ".png", body);
            }
          });
        }
        // TODO: Handle cm.skipped images
        break;

      case "error":
        console.error("Error: ", cm.error.code, cm.error.message);
        break;
    }
    res.send(""); // Response is ignored
});

app.listen(port); // start the server
console.log('Server started! At http://localhost:' + port);

रिटर्न URL के लिए पूर्ण दस्तावेज़ देखें

डाउनलोड सर्वर API के लिए पूर्ण दस्तावेज़ देखें।

सफलता के उदाहरण clippingMagicJson इसमें डीकोड करता है:
{
  "event" : "editor-exit",
  "images" : [ {
    "id" : 2345,
    "secret" : "image_secret"
  } ],
  "clipped" : [ {
    "id" : 2345,
    "secret" : "image_secret"
  } ],
  "skipped" : [ ]
}
अपने रिटर्न URL की जांच करें
त्रुटि के उदाहरण clippingMagicJson इसमें डीकोड करता है:
{
  "event" : "error",
  "error" : {
    "status" : 400,
    "code" : 1234,
    "message" : "Example error"
  },
  "images" : [ {
    "id" : 2345,
    "secret" : "image_secret"
  } ],
  "clipped" : [ ],
  "skipped" : [ {
    "id" : 2345,
    "secret" : "image_secret"
  } ]
}
अपने रिटर्न URL की जांच करें

व्हाइट लेबल एडीटर

प्रचालन का सिद्धांत

  1. एक इमेज अपलोड करें और इमेज की पहचान करते id और secret को प्राप्त करें।

  2. अपने वेब पेज पर व्हाइट लेबल संपादक को एम्बेड करें जहां आपका मानव ऑपरेटर इमेज को क्लिप कर सकता है।

  3. क्लिपिंग प्रगति के बारे में जानकारी प्राप्त करने और नए परिणाम डाउनलोड करने के लिए callback का इस्तेमाल करें।

इमेज को अपलोड करें

# Requires "requests" to be installed (see python-requests.org)
import requests
import json

response = requests.post(
    'https://hi.clippingmagic.com/api/v1/images',
    files={'image': open('example.jpeg', 'rb')},
    data={
        'format': 'json',
        'test': 'true' # TODO: Remove for production
        # TODO: Add more upload options here
    },
    headers={
        'Authorization':
        'Basic MTIzOltzZWNyZXRd'
    },
)
if response.status_code == requests.codes.ok:
    r = json.loads(response.content)

    # TODO: Store these
    imageId = r["image"]["id"];
    imageSecret = r["image"]["secret"];
    print("Result", r, imageId, imageSecret);
else:
    print("Error:", response.status_code, response.text)
// Requires "request" to be installed (see https://www.npmjs.com/package/request)
var request = require('request');
var fs = require('fs');

request.post({
  url: 'https://hi.clippingmagic.com/api/v1/images',
  formData: {
    image: fs.createReadStream('example.jpeg'), // TODO: Replace with your image
    format: 'json',
    test: 'true', // TODO: Remove for production
    // TODO: Add more upload options here
  },
  auth: {user: '123', pass: '[secret]'},
}, 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 {
    let r = JSON.parse(body);

    // TODO: Store these
    let imageId = r.image.id;
    let imageSecret = r.image.secret;
    console.log("Result", r, imageId, imageSecret);
  }
});
# Requires "requests" to be installed (see python-requests.org)
import requests
import json

response = requests.post(
    'https://hi.clippingmagic.com/api/v1/images',
    data={
        'image.url': 'https://example.com/example.jpeg',
        'format': 'json',
        'test': 'true' # TODO: Remove for production
        # TODO: Add more upload options here
    },
    headers={
        'Authorization':
        'Basic MTIzOltzZWNyZXRd'
    },
)
if response.status_code == requests.codes.ok:
    r = json.loads(response.content)

    # TODO: Store these
    imageId = r["image"]["id"];
    imageSecret = r["image"]["secret"];
    print("Result", r, imageId, imageSecret);
else:
    print("Error:", response.status_code, response.text)
// Requires "request" to be installed (see https://www.npmjs.com/package/request)
var request = require('request');
var fs = require('fs');

request.post({
  url: 'https://hi.clippingmagic.com/api/v1/images',
  formData: {
    'image.url': 'https://example.com/example.jpeg', // TODO: Replace with your image
    format: 'json',
    test: 'true', // TODO: Remove for production
    // TODO: Add more upload options here
  },
  auth: {user: '123', pass: '[secret]'},
}, 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 {
    let r = JSON.parse(body);

    // TODO: Store these
    let imageId = r.image.id;
    let imageSecret = r.image.secret;
    console.log("Result", r, imageId, imageSecret);
  }
});

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

व्हाइट लेबल एडीटर को एम्बेड करें

अपने वेब पेज़ पर ClippingMagic.js को कॉल करें, और अपलोड से प्राप्त वैल्यूज़ के साथ हार्डकोर्ड किये गये id और secret को बदलें:

<script src="https://clippingmagic.com/api/v1/ClippingMagic.js" type="text/javascript"></script>
<script type="text/javascript">
  function myCallback(opts) {
    // TODO: Replace this with your own functionality
    switch (opts.event) {
      case "error":
          alert("An error occurred: " + opts.error.status + ", " + opts.error.code + ", " + opts.error.message);
          break;

      case "result-generated":
          alert("Generated a result for " + opts.image.id + ", " + opts.image.secret);
          break;

      case "editor-exit":
          alert("The editor dialog closed");
          break;
    }
  }
  var errorsArray = ClippingMagic.initialize({apiId: 123});
  if (errorsArray.length > 0) alert("Sorry, your browser is missing some required features: \n\n " + errorsArray.join("\n "));
  else ClippingMagic.edit({
    "image" : {
      "id" : 2345,
      "secret" : "image_secret"
    },
    "useStickySettings" : true,
    "locale" : "hi-IN"
  }, myCallback);
</script>

आप डाउनलोड सर्वर API का इस्तेमाल करके फिर आप अब नये उपलब्ध परिणामों को डाउनलोड कर सकते हैं।

व्हाइट लेबल एडीटर के लिए सम्पूर्ण दस्तावेज़ देखें।

App Image JSON id + secret Human Operator CM API Clip Image App Specific (up to integration) callback() ClippingMagic.js yoursite.com Background Removed Fetch Image