---
seo_title: API JPEG en PNG : Convertir JPG en PNG par code | EnConvert
meta_desc: Convertissez JPEG en PNG via une API REST. POST /v1/convert/jpeg-to-png renvoie un PNG sans perte en octets bruts ou URL présignée. Exemples Python, Node, PHP, Go.
keywords: api jpeg en png, convertir jpg en png api, jpg vers png api, api conversion image REST, convertir jpg en png python, jpeg en png sans perte api, api convertisseur jpg png
---

# API JPEG en PNG

Convertissez des images JPEG en PNG par programmation avec `POST /v1/convert/jpeg-to-png`. L'endpoint accepte un fichier `.jpeg` ou `.jpg` et produit un PNG sans perte avec une fidélité colorimétrique totale. 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/jpeg-to-png
```

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

**Entrée acceptée :** fichiers `.jpeg or .jpg`

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

---

## 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 `.jpeg or .jpg` à 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` | 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
- Les données de couleur RGB du JPEG sont préservées sans perte dans le PNG de sortie
- Le PNG de sortie utilise une compression sans perte
- La qualité de sortie est maximale (sans perte)


---

## Réponse

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

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

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

---

## Exemples de code

### Python

```python
import requests

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

with open("photo_20260405_123456789.png", "wb") as out:
    out.write(response.content)
```

### Node.js

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

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

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

### PHP

```php
$ch = curl_init("https://api.enconvert.com/v1/convert/jpeg-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("photo.jpg")]
]);
$output = curl_exec($ch);
curl_close($ch);
file_put_contents("photo_20260405_123456789.png", $output);
```

### Go

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

req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/jpeg-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 `.jpeg or .jpg` |
| `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 JPG en PNG avec une API REST ?

Envoyez une requête POST `multipart/form-data` à `/v1/convert/jpeg-to-png` avec votre fichier `.jpeg` ou `.jpg` 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 PNG bruts.

### La conversion JPEG en PNG est-elle sans perte ?

Oui. Les données de couleur RGB du JPEG sont préservées sans perte dans le PNG de sortie, et le PNG lui-même utilise une compression sans perte à qualité maximale.

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

### Pourquoi l'API renvoie-t-elle 402 Payment Required ?

Une erreur `402` signifie que le quota mensuel d'ops ou la limite de stockage de votre plan est atteint. Les fichiers dépassant la taille maximale de votre plan renvoient `413 Payload Too Large` à la place.
