API de PNG a JPEG#
Convierte imágenes PNG a JPEG mediante programación con POST /v1/convert/png-to-jpeg. El endpoint acepta una subida .png y, como JPEG no admite transparencia, compone las áreas transparentes sobre un fondo blanco. Las respuestas devuelven los bytes de la imagen sin procesar para descarga directa o metadatos JSON con una URL de descarga prefirmada.
Endpoint#
POST /v1/convert/png-to-jpeg
Content-Type: multipart/form-data
Entrada aceptada: archivos .png
Formato de salida: .jpeg (image/jpeg)
Autenticación#
Requiere una clave API privada o un token JWT obtenido de una clave pública.
X-API-Key: sk_your_private_key
O bien:
Authorization: Bearer <jwt_token>
Parámetros de la solicitud#
| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|---|---|---|---|---|
file |
file | Sí | -- | El archivo de imagen .png a convertir. |
output_filename |
string |
No | Nombre del archivo de entrada | Nombre de archivo de salida personalizado. La extensión .jpeg se añade automáticamente. |
direct_download |
boolean |
No | true |
Con true, devuelve los bytes de la imagen sin procesar. Con false, devuelve metadatos JSON con una URL de descarga prefirmada. |
Detalles de la conversión#
- Usa Pillow para la conversión directa de formato
- Si el PNG tiene canal alfa (RGBA), las áreas transparentes se componen sobre un fondo blanco antes de la conversión
- Los demás modos de color distintos de RGB se convierten a RGB
- La calidad de salida se fija en el máximo (100)
Respuesta#
Descarga directa (direct_download=true, predeterminado)#
HTTP 200 OK
Content-Type: image/jpeg
Content-Disposition: inline; filename="image_20260405_123456789.jpeg"
Devuelve los bytes de la imagen sin procesar.
Respuesta con metadatos (direct_download=false)#
{
"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
}
Ejemplos de código#
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#
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#
$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#
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)
Respuestas de error#
| Estado | Condición |
|---|---|
400 Bad Request |
El archivo no es un archivo .png |
400 Bad Request |
La conversión de la imagen falló (archivo dañado o no compatible) |
401 Unauthorized |
Clave API o token JWT ausente o no válido |
402 Payment Required |
Cuota mensual de ops agotada |
402 Payment Required |
Límite de almacenamiento alcanzado |
413 Payload Too Large |
El archivo supera el tamaño máximo del plan |
Límites#
| Límite | Valor |
|---|---|
| Tamaño máximo de archivo | Según el plan (Founding: 5 MB) |
| Calidad de salida | Máxima (no configurable) |
| Conversiones mensuales | Según el plan |
Preguntas frecuentes#
¿Cómo convierto un PNG a JPG con una API REST?#
Envía una solicitud POST multipart/form-data a /v1/convert/png-to-jpeg con tu archivo .png en el campo file, autenticada vía X-API-Key o un token JWT Bearer. De forma predeterminada, la API responde con los bytes del JPEG sin procesar.
¿Qué pasa con la transparencia del PNG al convertir a JPEG?#
JPEG no admite transparencia, así que cualquier área transparente o semitransparente del PNG (canal alfa RGBA) se compone sobre un fondo blanco y aparecerá en blanco en el JPEG de salida.
¿Puedo obtener una URL de descarga en lugar de los bytes de la imagen?#
Sí. Establece direct_download=false y la API devuelve metadatos JSON que incluyen presigned_url, object_key, filename, file_size y conversion_time_seconds.
¿Puedo controlar la calidad de salida del JPEG?#
No. La calidad de salida está fijada en el máximo (100) y no es configurable. Puedes personalizar el nombre del archivo de salida con el parámetro output_filename; la extensión .jpeg se añade automáticamente.