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 | Sì | -- | 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,heighteviewBoxpropri dell'SVG (predefinito 96 DPI); i parametriwidth/heightdella 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)
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.