---
seo_title: API PNG vers SVG : Intégrer un PNG dans un SVG | EnConvert
meta_desc: Encapsulez un PNG dans un SVG via POST /v1/convert/png-to-svg. Le PNG est intégré en base64 en data URI dans un élément SVG image, sans vectorisation.
keywords: api png vers svg, convertir png en svg api, intégrer png dans svg, png vers svg sans vectorisation, data uri base64 png svg, api rest png vers svg, encapsuler png dans svg, image raster dans svg
---

# API PNG vers SVG

L'API PNG vers SVG intègre une image PNG dans un conteneur SVG en une seule requête vers `POST /v1/convert/png-to-svg`. Les données du PNG sont encodées en base64 et placées comme data URI à l'intérieur d'un élément SVG `<image>`, les dimensions et le viewBox du SVG correspondant aux dimensions en pixels de l'image d'origine. Il ne s'agit pas de vectorisation : la sortie est une image matricielle encapsulée dans du SVG. Les réponses renvoient directement les octets du SVG, ou des métadonnées JSON avec une URL de téléchargement présignée lorsque `direct_download=false`.

---

## Point de terminaison

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

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

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

**Format de sortie :** `.svg` (`image/svg+xml`)

---

## 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 `.png` à convertir. |
| `output_filename` | `string` | Non | Nom du fichier d'entrée | Nom de fichier de sortie personnalisé. L'extension `.svg` 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. |

---

## Détails de la conversion

- Le PNG est **encodé en base64 et intégré** à l'intérieur d'un élément SVG `<image>` sous forme de data URI
- Les dimensions et le viewBox du SVG correspondent aux dimensions en pixels de l'image d'origine
- La transparence du PNG est préservée dans les données intégrées
- **Il ne s'agit PAS de vectorisation** -- la sortie contient l'intégralité des données de l'image matricielle, et non des tracés vectoriels

<div class="alert alert-warning">
<strong>Pas de vectorisation :</strong> Ce point de terminaison intègre l'image matricielle dans un conteneur SVG. Il ne trace pas l'image et ne la convertit pas en tracés vectoriels. Le fichier de sortie sera plus volumineux que l'entrée en raison de l'encodage base64 (~33 % de surcharge).
</div>

---

## Réponse

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

```
HTTP 200 OK
Content-Type: image/svg+xml
Content-Disposition: inline; filename="image_20260405_123456789.svg"
```

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}/png-to-svg/image_20260405_123456789.svg",
    "filename": "image_20260405_123456789.svg",
    "file_size": 45678,
    "conversion_time_seconds": 0.5
}
```

---

## Exemples de code

### Python

```python
import requests

with open("image.png", "rb") as f:
    response = requests.post(
        "https://api.enconvert.com/v1/convert/png-to-svg",
        headers={"X-API-Key": "sk_your_private_key"},
        files={"file": ("image.png", f)}
    )

with open("image_20260405_123456789.svg", "wb") as out:
    out.write(response.content)
```

### Node.js

```javascript
const form = new FormData();
form.append("file", fs.createReadStream("image.png"));

const response = await fetch("https://api.enconvert.com/v1/convert/png-to-svg", {
    method: "POST",
    headers: { "X-API-Key": "sk_your_private_key" },
    body: form
});

fs.writeFileSync("image_20260405_123456789.svg", Buffer.from(await response.arrayBuffer()));
```

### PHP

```php
$ch = curl_init("https://api.enconvert.com/v1/convert/png-to-svg");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ["X-API-Key: sk_your_private_key"],
    CURLOPT_POSTFIELDS => ["file" => new CURLFile("image.png")]
]);
$output = curl_exec($ch);
curl_close($ch);
file_put_contents("image_20260405_123456789.svg", $output);
```

### Go

```go
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, _ := writer.CreateFormFile("file", "image.png")
file, _ := os.Open("image.png")
io.Copy(part, file)
writer.Close()

req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/png-to-svg", 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 `.png` |
| `400 Bad Request` | La conversion de l'image a échoué (fichier corrompu ou non pris en charge) |
| `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) |
| Conversions mensuelles | Selon le forfait |

---

## Questions fréquentes

### L'API PNG vers SVG vectorise-t-elle mon image ?

Non. Ce point de terminaison intègre le PNG matriciel dans un conteneur SVG sous forme de data URI base64 dans un élément SVG `<image>`. Il ne trace pas l'image et ne la convertit pas en tracés vectoriels.

### Pourquoi mon fichier SVG de sortie est-il plus volumineux que le PNG d'entrée ?

Le PNG est encodé en base64 lors de son intégration dans le SVG, ce qui ajoute environ 33 % de surcharge : le fichier de sortie est donc plus volumineux que l'entrée.

### La transparence du PNG est-elle préservée lors de l'intégration dans le SVG ?

Oui. La transparence du PNG est préservée dans les données intégrées, et les dimensions ainsi que le viewBox du SVG correspondent aux dimensions en pixels de l'image d'origine.

### Comment convertir PNG en SVG avec une API REST ?

Envoyez une requête `POST` à `/v1/convert/png-to-svg` avec votre fichier `.png` en `multipart/form-data`, authentifiée via `X-API-Key` ou un jeton JWT `Authorization: Bearer`. Vous récupérez les octets SVG, ou une `presigned_url` en JSON lorsque `direct_download=false`.

### Pourquoi l'API renvoie-t-elle 400 Bad Request ?

Une réponse `400 Bad Request` signifie que le fichier envoyé n'est pas un fichier `.png`, ou que la conversion de l'image a échoué parce que le fichier est corrompu ou non pris en charge.
