---
seo_title: API SVG vers JPEG : Rastériser du SVG en JPG | EnConvert
meta_desc: Rastérisez du SVG en JPEG avec POST /v1/convert/svg-to-jpeg. CairoSVG rend vos pixels et renvoie un JPEG en octets bruts ou URL présignée. Exemples de code.
keywords: api svg vers jpeg, convertir svg en jpg api, rastériser un svg en jpeg, svg vers jpg programmatiquement, api de conversion svg jpg, cairosvg jpeg api, rendre un svg en image api
---

# API SVG vers JPEG

Rastérisez des images SVG en JPEG de façon programmatique avec `POST /v1/convert/svg-to-jpeg`. L'endpoint rend le SVG en pixels à l'aide de CairoSVG, compose les zones transparentes sur un fond blanc, et renvoie un JPEG. Les paramètres optionnels `width` et `height` définissent les dimensions de sortie en pixels. Les réponses renvoient soit les octets bruts de l'image pour un téléchargement direct, soit des métadonnées JSON avec une URL de téléchargement présignée.

---

## Endpoint

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

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

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

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

---

## 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 | Obligatoire | Valeur 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 `.jpeg` est ajoutée automatiquement. |
| `direct_download` | `boolean` | Non | `true` | Si `true`, renvoie les octets bruts de l'image. Si `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). Si `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). Si `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 vers un PNG intermédiaire, puis **Pillow** pour convertir en JPEG
- 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
- Si le SVG n'a pas de dimensions explicites, CairoSVG applique ses propres valeurs par défaut
- Les zones transparentes sont composées sur un **fond blanc**
- La qualité de sortie est fixée au maximum (100)

<div class="alert alert-info">
<strong>Remarque 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/jpeg
Content-Disposition: inline; filename="icon_20260405_123456789.jpeg"
```

Renvoie les octets bruts de l'image.

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

---

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

---

## Réponses d'erreur

| Statut | Condition |
|--------|-----------|
| `400 Bad Request` | Le fichier n'est pas un fichier `.svg` |
| `400 Bad Request` | Échec de la conversion de l'image (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 plan |

---

## Limites

| Limite | Valeur |
|-------|-------|
| Taille de fichier maximale | Selon le plan (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 plan |

---

## Questions fréquentes

### Comment convertir un SVG en JPG avec une API REST ?

Envoyez une requête POST `multipart/form-data` à `/v1/convert/svg-to-jpeg` avec votre fichier `.svg` dans le champ `file`, authentifiée via `X-API-Key` ou un jeton JWT `Bearer`. CairoSVG rend le SVG vers un PNG intermédiaire, puis Pillow le convertit en JPEG.

### Comment contrôler la résolution de sortie lors de la rastérisation d'un SVG ?

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.

### Qu'advient-il des zones transparentes du SVG ?

Le JPEG ne prend pas en charge la transparence, les zones transparentes sont donc composées sur un fond blanc dans le résultat.

### Puis-je obtenir une URL de téléchargement plutôt que les octets bruts de l'image ?

Oui. Définissez `direct_download=false` et l'API renvoie des métadonnées JSON incluant `presigned_url`, `object_key`, `filename`, `file_size` et `conversion_time_seconds`.
