---
seo_title: API da SVG a PNG: Rasterizza Immagini SVG in PNG | EnConvert
meta_desc: Rasterizza SVG in PNG con POST /v1/convert/svg-to-png. CairoSVG renderizza l'SVG alla dimensione dichiarata, trasparenza preservata; ricevi byte o URL presigned.
keywords: convertire svg in png, api rasterizzazione svg, svg to png online, rasterizzare svg in png, svg to png rest api, svg in png con trasparenza, cairosvg rendering png api, risoluzione svg to png
---

# API da SVG a PNG

L'API da SVG a PNG rasterizza un'immagine SVG in formato PNG con una singola richiesta a `POST /v1/convert/svg-to-png`. Carica un file `.svg` come multipart/form-data e l'SVG viene renderizzato in pixel usando CairoSVG, con la trasparenza preservata nell'output PNG. I parametri opzionali `width` e `height` impostano le dimensioni di output in pixel. La risposta è composta dai byte PNG grezzi per impostazione predefinita, oppure da metadati JSON con un URL di download presigned quando `direct_download=false`.

---

## Endpoint

```
POST /v1/convert/svg-to-png
```

**Content-Type:** `multipart/form-data`

**Input accettato:** file `.svg`

**Formato di output:** `.png` (`image/png`)

---

## 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 `.png` 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 direttamente in PNG
- Per impostazione predefinita, la risoluzione di output è determinata dagli attributi `width`, `height` e `viewBox` dell'SVG stesso (default 96 DPI); i parametri `width`/`height` della richiesta la sovrascrivono
- La trasparenza viene **preservata** nell'output PNG
- Se l'SVG non ha dimensioni esplicite, CairoSVG usa i propri valori predefiniti

<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 dell'SVG stesso a decidere la risoluzione.
</div>

---

## Risposta

### Download diretto (`direct_download=true`, predefinito)

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

Restituisce i byte grezzi dell'immagine.

### Risposta con metadati (`direct_download=false`)

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

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

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

### PHP

```php
$ch = curl_init("https://api.enconvert.com/v1/convert/svg-to-png");
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.png", $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-png", 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 prevista 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 rasterizzo un SVG in PNG con una API REST?

Invia una richiesta `POST` a `/v1/convert/svg-to-png` con il tuo file `.svg` come `multipart/form-data`, autenticandoti tramite `X-API-Key` o un token JWT `Authorization: Bearer`. CairoSVG renderizza l'SVG direttamente in PNG e restituisce i byte grezzi.

### Come controllo la risoluzione di output del PNG?

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.

### La trasparenza viene preservata quando converto SVG in PNG?

Sì. La trasparenza viene preservata nell'output PNG.

### Cosa succede se il mio SVG non ha dimensioni esplicite?

Se l'SVG non ha dimensioni esplicite, CairoSVG usa i propri valori predefiniti per determinare le dimensioni dell'output.

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

Sì. Imposta `direct_download=false` e l'API restituisce un JSON con `presigned_url`, `filename`, `file_size` e `conversion_time_seconds`.
