API da SVG a WebP#
Converti SVG in WebP con l'endpoint POST /v1/convert/svg-to-webp. L'SVG viene renderizzato tramite CairoSVG, poi codificato come WebP alla massima qualità con la trasparenza preservata. I parametri opzionali width e height impostano le dimensioni di output in pixel. Le risposte restituiscono byte WebP grezzi per impostazione predefinita, oppure metadati JSON con un URL di download presigned quando direct_download=false.
Endpoint#
POST /v1/convert/svg-to-webp
Content-Type: multipart/form-data
Input accettato: file .svg
Formato di output: .webp (image/webp)
Autenticazione#
Richiede una chiave API privata oppure un token JWT generato da una chiave pubblica.
X-API-Key: sk_your_private_key
Oppure:
Authorization: Bearer <jwt_token>
Parametri della richiesta#
| Parametro | Tipo | Obbligatorio | Predefinito | Descrizione |
|---|---|---|---|---|
file |
file | Sì | -- | Il file immagine .svg da convertire. |
output_filename |
string |
No | Nome del file di input | Nome file di output personalizzato. L'estensione .webp viene aggiunta automaticamente. |
direct_download |
boolean |
No | true |
Se true, restituisce i byte grezzi dell'immagine. Se false, restituisce metadati JSON con un URL di download presigned. |
width |
integer |
No | Dimensione propria dell'SVG | Larghezza di output in pixel (1-10000). Se height è omesso, l'altezza viene derivata dalle proporzioni dell'SVG. |
height |
integer |
No | Dimensione propria dell'SVG | Altezza di output in pixel (1-10000). Se width è omesso, la larghezza viene derivata dalle proporzioni dell'SVG. |
Dettagli della conversione#
- Usa CairoSVG per renderizzare l'SVG in un PNG intermedio, poi Pillow per la codifica WebP
- Per impostazione predefinita, la risoluzione di output è determinata dagli attributi
width,heighteviewBoxdell'SVG stesso; i parametriwidth/heightdella richiesta la sovrascrivono - La trasparenza viene preservata nell'output WebP
- La qualità di output è impostata al massimo (100)
width e/o height (pixel, 1-10000) per impostare la dimensione di output. Una sola dimensione scala l'immagine in modo proporzionale rispetto alle proporzioni dell'SVG; entrambe insieme impostano la dimensione esatta del canvas (il che può alterare le proporzioni). Le richieste oltre 25,000,000 pixel totali di output vengono rifiutate con 400. Senza questi parametri, sono gli attributi di dimensione dell'SVG stesso a decidere la risoluzione.
Risposta#
Download diretto (direct_download=true, predefinito)#
HTTP 200 OK
Content-Type: image/webp
Content-Disposition: inline; filename="icon_20260405_123456789.webp"
Restituisce i byte grezzi dell'immagine.
Risposta con metadati (direct_download=false)#
{
"presigned_url": "https://spaces.example.com/...",
"object_key": "env/files/{project_id}/svg-to-webp/icon_20260405_123456789.webp",
"filename": "icon_20260405_123456789.webp",
"file_size": 45678,
"conversion_time_seconds": 0.5
}
Esempi di codice#
Python#
import requests
with open("icon.svg", "rb") as f:
response = requests.post(
"https://api.enconvert.com/v1/convert/svg-to-webp",
headers={"X-API-Key": "sk_your_private_key"},
files={"file": ("icon.svg", f)}
)
with open("icon_20260405_123456789.webp", "wb") as out:
out.write(response.content)
Node.js#
const form = new FormData();
form.append("file", fs.createReadStream("icon.svg"));
const response = await fetch("https://api.enconvert.com/v1/convert/svg-to-webp", {
method: "POST",
headers: { "X-API-Key": "sk_your_private_key" },
body: form
});
fs.writeFileSync("icon_20260405_123456789.webp", Buffer.from(await response.arrayBuffer()));
PHP#
$ch = curl_init("https://api.enconvert.com/v1/convert/svg-to-webp");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["X-API-Key: sk_your_private_key"],
CURLOPT_POSTFIELDS => ["file" => new CURLFile("icon.svg")]
]);
$output = curl_exec($ch);
curl_close($ch);
file_put_contents("icon_20260405_123456789.webp", $output);
Go#
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, _ := writer.CreateFormFile("file", "icon.svg")
file, _ := os.Open("icon.svg")
io.Copy(part, file)
writer.Close()
req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/svg-to-webp", body)
req.Header.Set("Content-Type", writer.FormDataContentType())
req.Header.Set("X-API-Key", "sk_your_private_key")
resp, _ := http.DefaultClient.Do(req)
Risposte di errore#
| Stato | Condizione |
|---|---|
400 Bad Request |
Il file non è un file .svg |
400 Bad Request |
Conversione dell'immagine non riuscita (file corrotto o non supportato) |
400 Bad Request |
width/height fuori intervallo (1-10000) oppure pixel totali di output oltre 25,000,000 |
401 Unauthorized |
Chiave API / token JWT mancante o non valido |
402 Payment Required |
Quota mensile di ops esaurita |
402 Payment Required |
Limite di storage raggiunto |
413 Payload Too Large |
Il file supera la dimensione massima consentita dal piano |
Limiti#
| Limite | Valore |
|---|---|
| Dimensione massima del file | Dipende dal piano (Founding: 5 MB) |
| Qualità di output | Massima (non configurabile) |
| Dimensione massima di output | 10000 px per dimensione, 25,000,000 px totali |
| Conversioni mensili | Dipende dal piano |
Domande frequenti#
Come converto un SVG in WebP con una API REST?#
Invia una richiesta POST multipart/form-data a /v1/convert/svg-to-webp con l'SVG nel campo file, autenticata tramite X-API-Key o un JWT Bearer. La risposta restituisce byte WebP grezzi per impostazione predefinita, oppure imposta direct_download=false per ricevere JSON con un URL di download presigned.
La conversione da SVG a WebP preserva la trasparenza?#
Sì. La trasparenza nell'SVG viene preservata nell'output WebP.
Come ottengo un WebP a risoluzione più alta dal mio SVG?#
Passa i campi form width e/o height (in pixel, fino a 10000 per dimensione). Una sola dimensione scala l'output in modo proporzionale rispetto alle proporzioni dell'SVG; entrambe le dimensioni impostano la dimensione esatta dell'output. Senza di essi, sono gli attributi width, height e viewBox dell'SVG stesso a decidere la risoluzione.
Posso impostare la qualità del WebP su questo endpoint?#
No. La qualità di output è fissa al massimo (100) e non è configurabile.