Mevcut hızlı başlangıçlar:
Bir resim yükleyin ve kırpılmış sonucunu alın:
$ curl https://tr.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://tr.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://tr.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://tr.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://tr.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://tr.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); } });
Size resminizin nasıl işlendiği üzerinde tam bir kontrol sunan çok daha fazla sayıda yükleme ayarı seçeneği bulunmaktadır.
Eğer id
ve secret
kodlarını kaydederseniz Barındırılan Düzenleyiciyi veya Beyaz Etiket Düzenleyicisini sonucu gözden geçirdikten sonra da kullanabilirsiniz.
İşleyiş kuramı
Bir resim yükleyin ve resmi tanımlayan bir id
ve secret
alın.
İnsan olan operatörünüzün işi bittiğinde iadesi için internet sitenizde bir İade URL son noktası oluşturun.
id
, secret
ve İade URL'sini insan olan operatörünüzün resmi kırpması için Barındırılan Düzenleyici URL'sini oluşturmak amacıyla kullanın.
İnsan olan operatörünüz Barındırılan Düzenleyici URL'ye gider ve resmi kırpar.
İnsan olan operatörünüzün işi bittiğinde tarayıcıları sizin İade URL'nize HTTP POST'u gönderir. clippingMagicJson
parametresini ayrıştırın ve yeni sonuçları indirin.
# 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://tr.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://tr.clippingmagic.com/api/returnUrlExample' # TODO: Replace with your own hostedEditorUrl = 'https://tr.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://tr.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://tr.clippingmagic.com/api/returnUrlExample'; // TODO: Replace with your own let hostedEditorUrl = 'https://tr.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://tr.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://tr.clippingmagic.com/api/returnUrlExample' # TODO: Replace with your own hostedEditorUrl = 'https://tr.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://tr.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://tr.clippingmagic.com/api/returnUrlExample'; // TODO: Replace with your own let hostedEditorUrl = 'https://tr.clippingmagic.com/api/v1/hosted/123' + '?images=' + imageId + ':' + imageSecret + '&returnUrl=' + encodeURIComponent(returnUrl); console.log("Hosted Editor URL", hostedEditorUrl); } });
Size resminizin nasıl işlendiği üzerinde tam bir kontrol sunan çok daha fazla sayıda yükleme ayarı seçeneği bulunmaktadır.
Daha detaylı bilgi için tam Barındırılmış Düzenleyici belgelerini görün.
İnsan olan operatörünüzün işi bittiğinde tarayıcıları sizin İade URL'nize HTTP POST'u gönderir. clippingMagicJson
parametresini ayrıştırın ve yeni sonuçları indirin.
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://tr.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://tr.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);
clippingMagicJson
şuna çözer:
{ "event" : "editor-exit", "images" : [ { "id" : 2345, "secret" : "image_secret" } ], "clipped" : [ { "id" : 2345, "secret" : "image_secret" } ], "skipped" : [ ] }
clippingMagicJson
şuna çözer:
{ "event" : "error", "error" : { "status" : 400, "code" : 1234, "message" : "Example error" }, "images" : [ { "id" : 2345, "secret" : "image_secret" } ], "clipped" : [ ], "skipped" : [ { "id" : 2345, "secret" : "image_secret" } ] }
İşleyiş kuramı
Bir resim yükleyin ve resmi tanımlayan bir id
ve secret
alın.
İnsan olan operatörünüzün resmi kırpabileceği, kendi internet sayfanıza Beyaz etiket Düzenleyicisini ekleyin.
Kırpma işlemi ilerleyişi hakkında bilgi almak ve yeni sonuçları indirmek için callback
kullanın.
# Requires "requests" to be installed (see python-requests.org) import requests import json response = requests.post( 'https://tr.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://tr.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://tr.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://tr.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); } });
Size resminizin nasıl işlendiği üzerinde tam bir kontrol sunan çok daha fazla sayıda yükleme ayarı seçeneği bulunmaktadır.
İnternet sayfanızda ClippingMagic.js
çağırın ve yüklemeden elde ettiğiniz değerleri sabit kodlanmış id
ve secret
yerine koyun:
<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" : "tr-TR" }, myCallback); </script>
Daha sonra İndirme Sunucusu API'sini kullanarak mevcut yeni sonuçları indirin.