API da SVG a JPEG#

Rasterizza immagini SVG in JPEG in modo programmatico con POST /v1/convert/svg-to-jpeg. L'endpoint renderizza l'SVG in pixel usando CairoSVG, compositando le aree trasparenti su uno sfondo bianco, e restituisce un JPEG. I parametri opzionali width e height impostano le dimensioni di output in pixel. Le risposte restituiscono byte immagine grezzi per il download diretto oppure metadati JSON con un URL di download prefirmato.


Endpoint#

POST /v1/convert/svg-to-jpeg

Content-Type: multipart/form-data

Input accettato: file .svg

Formato di output: .jpeg (image/jpeg)


Autenticazione#

Richiede una chiave API privata oppure un token JWT da chiave pubblica.

X-API-Key: sk_your_private_key

Oppure:

Authorization: Bearer <jwt_token>

Parametri della richiesta#

Parametro Tipo Obbligatorio Predefinito Descrizione
file file -- Il file immagine .svg da convertire.
output_filename string No Nome file di input Nome file di output personalizzato. L'estensione .jpeg viene aggiunta automaticamente.
direct_download boolean No true Se true, restituisce i byte immagine grezzi. Se false, restituisce metadati JSON con un URL di download prefirmato.
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 convertire in JPEG
  • Per impostazione predefinita, la risoluzione di output è determinata dagli attributi width, height e viewBox propri dell'SVG (predefinito 96 DPI); i parametri width/height della richiesta la sovrascrivono
  • Se l'SVG non ha dimensioni esplicite, CairoSVG utilizza i propri valori predefiniti
  • Le aree trasparenti vengono compositate su uno sfondo bianco
  • La qualità di output è impostata al massimo (100)
Nota sulla risoluzione: Passa 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 propri dell'SVG a decidere la risoluzione.

Risposta#

Download diretto (direct_download=true, predefinito)#

HTTP 200 OK
Content-Type: image/jpeg
Content-Disposition: inline; filename="icon_20260405_123456789.jpeg"

Restituisce i byte immagine grezzi.

Risposta con metadati (direct_download=false)#

{
    "presigned_url": "https://spaces.example.com/...",
    "object_key": "env/files/{project_id}/svg-to-jpeg/icon_20260405_123456789.jpeg",
    "filename": "icon_20260405_123456789.jpeg",
    "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-jpeg",
        headers={"X-API-Key": "sk_your_private_key"},
        files={"file": ("icon.svg", f)}
    )

with open("icon_20260405_123456789.jpeg", "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-jpeg", {
    method: "POST",
    headers: { "X-API-Key": "sk_your_private_key" },
    body: form
});

fs.writeFileSync("icon_20260405_123456789.jpeg", Buffer.from(await response.arrayBuffer()));

PHP#

$ch = curl_init("https://api.enconvert.com/v1/convert/svg-to-jpeg");
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.jpeg", $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-jpeg", 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 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 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 JPG con una REST API?#

Invia una richiesta POST multipart/form-data a /v1/convert/svg-to-jpeg con il tuo file .svg nel campo file, autenticandoti tramite X-API-Key o un token JWT Bearer. CairoSVG renderizza l'SVG in un PNG intermedio, poi Pillow lo converte in JPEG.

Come controllo la risoluzione di output quando rasterizzo un 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 propri dell'SVG a decidere la risoluzione.

Cosa succede alle aree trasparenti nell'SVG?#

JPEG non supporta la trasparenza, quindi le aree trasparenti vengono compositate su uno sfondo bianco nell'output.

Posso ottenere un URL di download invece dei byte immagine grezzi?#

Sì. Imposta direct_download=false e l'API restituisce metadati JSON che includono presigned_url, object_key, filename, file_size e conversion_time_seconds.