---
seo_title: API SVG vers PNG : Rastériser des images SVG | EnConvert
meta_desc: Rastérisez un SVG en PNG via POST /v1/convert/svg-to-png. CairoSVG rend le SVG à sa taille déclarée, transparence préservée ; octets ou URL présignée.
keywords: api svg vers png, api de rastérisation svg, convertir svg en png api, rastériser svg en png, api rest svg vers png, svg vers png avec transparence, rendu png avec cairosvg, résolution svg vers png
---

# API SVG vers PNG

L'API SVG vers PNG rastérise une image SVG au format PNG en une seule requête vers `POST /v1/convert/svg-to-png`. Envoyez un fichier `.svg` en multipart/form-data et le SVG est rendu en pixels à l'aide de CairoSVG, la transparence étant préservée dans la sortie PNG. Les paramètres optionnels `width` et `height` définissent les dimensions de sortie en pixels. La réponse est constituée d'octets PNG bruts par défaut, ou de métadonnées JSON avec une URL de téléchargement présignée lorsque `direct_download=false`.

---

## Point de terminaison

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

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

**Entrée acceptée :** fichiers `.svg`

**Format de sortie :** `.png` (`image/png`)

---

## Authentification

Nécessite soit une clé API privée, soit un jeton JWT issu d'une clé publique.

```
X-API-Key: sk_your_private_key
```

Ou :

```
Authorization: Bearer <jwt_token>
```

---

## Paramètres de la requête

| Paramètre | Type | Requis | Par défaut | Description |
|-----------|------|----------|---------|-------------|
| `file` | file | Oui | -- | Le fichier image `.svg` à convertir. |
| `output_filename` | `string` | Non | Nom du fichier d'entrée | Nom de fichier de sortie personnalisé. L'extension `.png` est ajoutée automatiquement. |
| `direct_download` | `boolean` | Non | `true` | Lorsque la valeur est `true`, renvoie les octets bruts de l'image. Lorsqu'elle est `false`, renvoie des métadonnées JSON avec une URL de téléchargement présignée. |
| `width` | `integer` | Non | Taille propre au SVG | Largeur de sortie en pixels (1-10000). Lorsque `height` est omis, la hauteur est déduite du rapport d'aspect du SVG. |
| `height` | `integer` | Non | Taille propre au SVG | Hauteur de sortie en pixels (1-10000). Lorsque `width` est omis, la largeur est déduite du rapport d'aspect du SVG. |

---

## Détails de la conversion

- Utilise **CairoSVG** pour rendre le SVG directement en PNG
- Par défaut, la résolution de sortie est déterminée par les attributs `width`, `height` et `viewBox` propres au SVG (96 DPI par défaut) ; les paramètres de requête `width`/`height` la remplacent
- La transparence est **préservée** dans la sortie PNG
- Si le SVG ne comporte pas de dimensions explicites, CairoSVG utilise ses propres valeurs par défaut

<div class="alert alert-info">
<strong>Note sur la résolution :</strong> Transmettez <code>width</code> et/ou <code>height</code> (en pixels, 1-10000) pour définir la taille de sortie. Une seule dimension redimensionne l'image proportionnellement selon le rapport d'aspect du SVG ; les deux ensemble définissent la taille exacte du canevas (ce qui peut modifier le rapport d'aspect). Les requêtes dépassant 25 000 000 pixels de sortie au total sont rejetées avec <code>400</code>. Sans ces paramètres, les attributs de taille propres au SVG déterminent la résolution.
</div>

---

## Réponse

### Téléchargement direct (`direct_download=true`, par défaut)

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

Renvoie les octets bruts de l'image.

### Réponse de métadonnées (`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
}
```

---

## Exemples de code

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

---

## Réponses d'erreur

| Statut | Condition |
|--------|-----------|
| `400 Bad Request` | Le fichier n'est pas un fichier `.svg` |
| `400 Bad Request` | La conversion de l'image a échoué (fichier corrompu ou non pris en charge) |
| `400 Bad Request` | `width`/`height` hors plage (1-10000) ou nombre total de pixels de sortie supérieur à 25 000 000 |
| `401 Unauthorized` | Clé API / jeton JWT manquant ou invalide |
| `402 Payment Required` | Quota mensuel d'ops épuisé |
| `402 Payment Required` | Limite de stockage atteinte |
| `413 Payload Too Large` | Le fichier dépasse la taille maximale autorisée par le forfait |

---

## Limites

| Limite | Valeur |
|-------|-------|
| Taille maximale de fichier | Selon le forfait (Founding : 5 MB) |
| Qualité de sortie | Maximale (non configurable) |
| Taille de sortie maximale | 10000 px par dimension, 25 000 000 px au total |
| Conversions mensuelles | Selon le forfait |

---

## Questions fréquentes

### Comment rastériser un SVG en PNG avec une API REST ?

Envoyez une requête `POST` à `/v1/convert/svg-to-png` avec votre fichier `.svg` en `multipart/form-data`, authentifiée via `X-API-Key` ou un jeton JWT `Authorization: Bearer`. CairoSVG rend le SVG directement en PNG et renvoie les octets bruts.

### Comment contrôler la résolution de sortie du PNG ?

Transmettez les champs de formulaire `width` et/ou `height` (en pixels, jusqu'à 10000 par dimension). Une seule dimension redimensionne la sortie proportionnellement selon le rapport d'aspect du SVG ; les deux dimensions définissent la taille de sortie exacte. Sans ces champs, les attributs `width`, `height` et `viewBox` propres au SVG déterminent la résolution.

### La transparence est-elle préservée lors de la conversion de SVG en PNG ?

Oui. La transparence est préservée dans la sortie PNG.

### Que se passe-t-il si mon SVG n'a pas de dimensions explicites ?

Si le SVG ne comporte pas de dimensions explicites, CairoSVG utilise ses propres valeurs par défaut pour déterminer la taille de sortie.

### Puis-je obtenir une URL de téléchargement présignée au lieu des octets PNG bruts ?

Oui. Définissez `direct_download=false` et l'API renvoie du JSON avec `presigned_url`, `filename`, `file_size` et `conversion_time_seconds`.
