Šalinkite fonus savo programose, parduotuvėse ar duomenų srautuose viena HTTPS užklausa.
Bazinis URL: https://bgcut.net/api/v1 · Raktą gausite skiltyje API raktai.
Autentifikavimas
Kiekvienoje užklausoje antraštėje X-Api-Key turi būti nurodytas jūsų API raktas. Raktai kuriami ir atšaukiami jūsų paskyroje. Kiekvienam raktui galite suteikti pavadinimą, kad galėtumėte juos keisti atskirai kiekvienai programai.
// Never ship your API key in public front-end code – proxy through your server.
const input = document.querySelector('input[type=file]');
input.addEventListener('change', async () => {
const form = new FormData();
form.append('image_file', input.files[0]);
form.append('size', 'preview');
const res = await fetch('https://bgcut.net/api/v1/remove', { method: 'POST', headers: { 'X-Api-Key': 'bgc_YOUR_API_KEY' }, body: form });
const blob = await res.blob();
document.querySelector('img#out').src = URL.createObjectURL(blob);
});
// Java 11+ HttpClient, no external libraries
import java.net.URI;
import java.net.http.*;
import java.nio.file.*;
public class BgCut {
public static void main(String[] a) throws Exception {
String key = "bgc_YOUR_API_KEY";
String boundary = "----bgcut" + System.nanoTime();
byte[] file = Files.readAllBytes(Path.of("photo.jpg"));
String head = "--" + boundary + "\r\nContent-Disposition: form-data; name=\"image_file\"; filename=\"photo.jpg\"\r\nContent-Type: image/jpeg\r\n\r\n";
String tail = "\r\n--" + boundary + "\r\nContent-Disposition: form-data; name=\"size\"\r\n\r\nauto\r\n--" + boundary + "--\r\n";
byte[] body = concat(head.getBytes(), file, tail.getBytes());
HttpRequest req = HttpRequest.newBuilder(URI.create("https://bgcut.net/api/v1/remove"))
.header("X-Api-Key", key)
.header("Content-Type", "multipart/form-data; boundary=" + boundary)
.POST(HttpRequest.BodyPublishers.ofByteArray(body)).build();
HttpResponse<byte[]> res = HttpClient.newHttpClient().send(req, HttpResponse.BodyHandlers.ofByteArray());
if (res.statusCode() == 200) Files.write(Path.of("result.png"), res.body());
else System.out.println(new String(res.body()));
}
static byte[] concat(byte[]... parts) { int n = 0; for (byte[] p : parts) n += p.length; byte[] out = new byte[n]; int o = 0; for (byte[] p : parts) { System.arraycopy(p, 0, out, o, p.length); o += p.length; } return out; }
}
using System.Net.Http;
using System.Net.Http.Headers;
var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-Api-Key", "bgc_YOUR_API_KEY");
using var form = new MultipartFormDataContent();
var fileContent = new ByteArrayContent(await File.ReadAllBytesAsync("photo.jpg"));
fileContent.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");
form.Add(fileContent, "image_file", "photo.jpg");
form.Add(new StringContent("auto"), "size");
form.Add(new StringContent("png"), "format");
var res = await client.PostAsync("https://bgcut.net/api/v1/remove", form);
if (res.IsSuccessStatusCode)
await File.WriteAllBytesAsync("result.png", await res.Content.ReadAsByteArrayAsync());
else
Console.WriteLine(await res.Content.ReadAsStringAsync());
Vaizdo failas (multipart/form-data). JPG, PNG, WebP, GIF, BMP, TIFF; daugiausia 25 MB / 30 MP.
image_url
string
Viešas vaizdo URL, iš kurio vaizdas atsisiunčiamas vietoj įkėlimo.
image_file_b64
string
Base64 koduotės vaizdas (pasirinktinai su data: priešdėliu).
size
auto | preview | full
preview – iki 640 px (naudojama nemokama mėnesio kvota, kreditai nenurašomi); full – originali raiška (1 kreditas); auto (numatytasis) – full, jei turite kreditų, kitu atveju preview.
format
png | jpg | webp
Išvesties formatas. png išsaugo skaidrumą; jpg sulieja vaizdą su bg_color spalva (numatytoji – balta).
model
fast | hq | portrait
lite (numatytasis, ~6 s, geriausias balansas), fast (~0,5 s, peržiūros kokybė), hq (~15 s, aukščiausia kokybė), portrait (~0,3 s, tik žmonėms).
bg_color
string
Fono spalva šešioliktainiu kodu, pvz., #ffffff. Nenurodykite, jei norite skaidraus fono.
bg_blur
number
Išsaugo originalų foną, bet jį sulieja nurodytu spinduliu pikseliais (1–200), pvz., 25 portreto režimo efektui. Turi pirmenybę prieš bg_color.
crop
boolean
Apkirpti išvestį pagal objekto ribas.
crop_margin
integer
Papildoma paraštė pikseliais aplink objektą apkerpant (0–200).
roi
string
Dominanti sritis, nurodyta dalimis x,y,w,h (0–1). DI analizuoja tik šį stačiakampį; viskas už jo ribų tampa skaidru.
Grąžina paskutinius 100 vaizdų, apdorotų jūsų API raktais, kartu su redaktoriaus URL, kad galėtumėte juos patobulinti naršyklėje.
Klaidos
Klaidos grąžinamos JSON formatu su klaidos kodu ir žmogui suprantamu pranešimu:
{ "ok": false, "error": "insufficient_credits", "message": "No credits left. Buy credits at https://bgcut.net/pricing or request size=preview." }
HTTP
error
Aprašymas
400
bad_request / missing_image
Trūksta parametrų arba jie neteisingi.
401
auth_required / invalid_key
API raktas nenurodytas, neteisingas arba atšauktas.
402
insufficient_credits / free_quota_exceeded
Nėra kreditų (pilnam dydžiui) arba išnaudota nemokama kvota (peržiūrai).
422
too_large / bad_type / fetch_failed
Nepavyko nuskaityti arba atsisiųsti vaizdo.
429
rate_limited
Per daug užklausų – sulėtinkite arba susisiekite su mumis dėl didesnių limitų.
500
processing_failed
Apdoroti nepavyko dėl mūsų klaidos – mokestis nenuskaičiuojamas.
Kodo pavyzdžiai
Visuose pavyzdžiuose naudojamas tas pats galinis taškas. Atsisiųskite visą pavyzdžių rinkinį: bgcut-api-examples.zip
Oficialus PHP SDK Atvirojo kodo kliento biblioteka su tipizuotais rezultatais, klaidų klasėmis ir paruoštais naudoti pavyzdžiais. MIT licencija. composer require bgcut-net/bgcut-php