---
seo_title: API PNG en JPEG : Convertir PNG en JPG par code | EnConvert
meta_desc: Convertissez PNG en JPEG via une API REST. POST /v1/convert/png-to-jpeg aplatit la transparence sur fond blanc et renvoie des octets bruts ou une URL présignée.
keywords: api png en jpeg, convertir png en jpg api, png vers jpg api, transparence png en jpeg, convertir png en jpg python, api rest conversion image, api convertisseur png jpg
---

# API PNG en JPEG

Convertissez des images PNG en JPEG par programmation avec `POST /v1/convert/png-to-jpeg`. L'endpoint accepte un fichier `.png` et, comme JPEG ne prend pas en charge la transparence, aplatit les zones transparentes sur un fond blanc. La réponse contient 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/png-to-jpeg
```

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

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

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

---

## Authentification

Requiert une clé API privée ou 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 | 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 `.jpeg` est ajoutée automatiquement. |
| `direct_download` | `boolean` | Non | `true` | Avec `true`, renvoie les octets bruts de l'image. Avec `false`, renvoie des métadonnées JSON avec une URL de téléchargement présignée. |

---

## Détails de la conversion

- Utilise **Pillow** pour la conversion directe de format
- Si le PNG possède un canal alpha (RGBA), les zones transparentes sont aplaties sur un **fond blanc** avant la conversion
- Les autres modes de couleur non RGB sont convertis en RGB
- La qualité de sortie est réglée au maximum (100)

<div class="alert alert-info">
<strong>Note sur la transparence :</strong> JPEG ne prend pas en charge la transparence. Toute zone transparente ou semi-transparente de votre PNG apparaîtra en blanc dans le JPEG de sortie.
</div>

---

## Réponse

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

```
HTTP 200 OK
Content-Type: image/jpeg
Content-Disposition: inline; filename="image_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}/png-to-jpeg/image_20260405_123456789.jpeg",
    "filename": "image_20260405_123456789.jpeg",
    "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-jpeg",
        headers={"X-API-Key": "sk_your_private_key"},
        files={"file": ("image.png", f)}
    )

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

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

### PHP

```php
$ch = curl_init("https://api.enconvert.com/v1/convert/png-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("image.png")]
]);
$output = curl_exec($ch);
curl_close($ch);
file_put_contents("image_20260405_123456789.jpeg", $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-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 `.png` |
| `400 Bad Request` | Échec de la conversion de l'image (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 plan |

---

## Limites

| Limite | Valeur |
|-------|-------|
| Taille maximale de fichier | Selon le plan (Founding : 5 MB) |
| Qualité de sortie | Maximale (non configurable) |
| Conversions mensuelles | Selon le plan |

---

## Questions fréquentes

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

Envoyez une requête POST `multipart/form-data` à `/v1/convert/png-to-jpeg` avec votre fichier `.png` dans le champ `file`, authentifiée via `X-API-Key` ou un jeton JWT `Bearer`. Par défaut, l'API répond avec les octets JPEG bruts.

### Que devient la transparence du PNG lors de la conversion en JPEG ?

JPEG ne prend pas en charge la transparence : toute zone transparente ou semi-transparente du PNG (canal alpha RGBA) est aplatie sur un fond blanc et apparaîtra en blanc dans le JPEG de sortie.

### Puis-je obtenir une URL de téléchargement au lieu des 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`.

### Puis-je contrôler la qualité de sortie du JPEG ?

Non. La qualité de sortie est fixée au maximum (100) et n'est pas configurable. Vous pouvez personnaliser le nom du fichier de sortie avec le paramètre `output_filename` ; l'extension `.jpeg` est ajoutée automatiquement.
