---
seo_title: API da SVG a JPEG: Rasterizza SVG in JPG nel Codice | EnConvert
meta_desc: Rasterizza SVG in JPEG con POST /v1/convert/svg-to-jpeg. CairoSVG converte in pixel e restituisce un JPEG come byte o URL prefirmato. Esempi di codice.
keywords: api da svg a jpeg, api da svg a jpg, convertire svg in jpeg via api, api per rasterizzare svg, convertitore svg jpg api, api per renderizzare svg in immagine, conversione cairosvg in jpeg
---

# 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`, `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)

<div class="alert alert-info">
<strong>Nota sulla risoluzione:</strong> Passa <code>width</code> e/o <code>height</code> (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 <code>400</code>. Senza questi parametri, sono gli attributi di dimensione propri dell'SVG a decidere la risoluzione.
</div>

---

## 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`)

```json
{
    "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

```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

```javascript
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

```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

```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`.
