---
seo_title: API JPEG in PNG: Converti JPG in PNG da codice | EnConvert
meta_desc: Converti JPEG in PNG con una API REST. POST /v1/convert/jpeg-to-png restituisce un PNG lossless come byte grezzi o URL prefirmato. Esempi Python, Node, PHP, Go.
keywords: api jpeg in png, convertire jpg in png api, jpg in png api rest, api conversione immagini, convertire jpeg in png python, jpg in png senza perdita api, api convertitore jpg png, jpeg in png curl
---

# API JPEG in PNG

Converti immagini JPEG in PNG in modo programmatico con `POST /v1/convert/jpeg-to-png`. L'endpoint accetta un upload `.jpeg` o `.jpg` e produce un PNG lossless con piena fedeltà cromatica. Le risposte restituiscono i byte grezzi dell'immagine per il download diretto oppure metadati JSON con un URL di download prefirmato.

---

## Endpoint

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

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

**Input accettato:** file `.jpeg or .jpg`

**Formato di output:** `.png` (`image/png`)

---

## Autenticazione

Richiede una chiave API privata oppure un token JWT ottenuto da una chiave pubblica.

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

Oppure:

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

---

## Parametri della richiesta

| Parametro | Tipo | Obbligatorio | Default | Descrizione |
|-----------|------|----------|---------|-------------|
| `file` | file | Sì | -- | Il file immagine `.jpeg or .jpg` da convertire. |
| `output_filename` | `string` | No | Nome del file di input | Nome file di output personalizzato. L'estensione `.png` viene aggiunta automaticamente. |
| `direct_download` | `boolean` | No | `true` | Se `true`, restituisce i byte grezzi dell'immagine. Se `false`, restituisce metadati JSON con un URL di download prefirmato. |

---

## Dettagli della conversione

- Usa **Pillow** per la conversione diretta del formato
- I dati colore RGB del JPEG vengono preservati senza perdita nell'output PNG
- L'output PNG usa una compressione lossless
- La qualità di output è massima (lossless)


---

## Risposta

### Download diretto (`direct_download=true`, predefinito)

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

Restituisce i byte grezzi dell'immagine.

### Risposta con metadati (`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
}
```

---

## Esempi di codice

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

---

## Risposte di errore

| Stato | Condizione |
|--------|-----------|
| `400 Bad Request` | Il file non è un file `.jpeg or .jpg` |
| `400 Bad Request` | Conversione dell'immagine non riuscita (file corrotto o non supportato) |
| `401 Unauthorized` | Chiave API o token JWT mancante o non valido |
| `402 Payment Required` | Quota mensile di ops esaurita |
| `402 Payment Required` | Limite di archiviazione raggiunto |
| `413 Payload Too Large` | Il file supera la dimensione massima prevista dal piano |

---

## Limiti

| Limite | Valore |
|-------|-------|
| Dimensione massima del file | Dipende dal piano (Founding: 5 MB) |
| Qualità di output | Massima (non configurabile) |
| Conversioni mensili | Dipende dal piano |

---

## Domande frequenti

### Come converto un JPG in PNG con una API REST?

Invia una richiesta POST `multipart/form-data` a `/v1/convert/jpeg-to-png` con il file `.jpeg` o `.jpg` nel campo `file`, autenticandoti via `X-API-Key` o un token JWT `Bearer`. Di default l'API risponde con i byte PNG grezzi.

### La conversione da JPEG a PNG è lossless?

Sì. I dati colore RGB del JPEG vengono preservati senza perdita nell'output PNG, e il PNG stesso usa una compressione lossless alla massima qualità.

### Posso ottenere un URL di download invece dei byte grezzi dell'immagine?

Sì. Imposta `direct_download=false` e l'API restituisce metadati JSON che includono `presigned_url`, `object_key`, `filename`, `file_size` e `conversion_time_seconds`.

### Perché l'API restituisce 402 Payment Required?

Un `402` significa che hai esaurito la quota mensile di ops o raggiunto il limite di archiviazione del tuo piano. I file che superano la dimensione massima del piano restituiscono invece `413 Payload Too Large`.
