API da PNG a SVG#

L'API da PNG a SVG incorpora un'immagine PNG all'interno di un wrapper SVG con una singola richiesta a POST /v1/convert/png-to-svg. I dati del PNG vengono codificati in base64 e inseriti come data URI all'interno di un elemento <image> SVG, con le dimensioni SVG e il viewBox che corrispondono alle dimensioni in pixel dell'immagine originale. Questa non è vettorizzazione: l'output è un'immagine raster racchiusa in un SVG. Le risposte restituiscono direttamente i byte SVG, oppure metadati JSON con un URL di download presigned quando direct_download=false.


Endpoint#

POST /v1/convert/png-to-svg

Content-Type: multipart/form-data

Input accettato: file .png

Formato di output: .svg (image/svg+xml)


Autenticazione#

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

X-API-Key: sk_your_private_key

Oppure:

Authorization: Bearer <jwt_token>

Parametri della richiesta#

Parametro Tipo Obbligatorio Predefinito Descrizione
file file -- Il file immagine .png da convertire.
output_filename string No Nome del file di input Nome file di output personalizzato. L'estensione .svg 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 presigned.

Dettagli della conversione#

  • Il PNG viene codificato in base64 e incorporato all'interno di un elemento <image> SVG come data URI
  • Le dimensioni dell'SVG e il viewBox corrispondono alle dimensioni in pixel dell'immagine originale
  • La trasparenza del PNG viene preservata nei dati incorporati
  • Questa NON è vettorizzazione -- l'output contiene i dati completi dell'immagine raster, non percorsi vettoriali
Non è vettorizzazione: Questo endpoint incorpora l'immagine raster all'interno di un contenitore SVG. Non traccia né converte l'immagine in percorsi vettoriali. Il file di output sarà più grande dell'input a causa della codifica base64 (~33% di overhead).

Risposta#

Download diretto (direct_download=true, predefinito)#

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

Restituisce i byte grezzi dell'immagine.

Risposta con metadati (direct_download=false)#

{
    "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
}

Esempi di codice#

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#

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#

$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#

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)

Risposte di errore#

Stato Condizione
400 Bad Request Il file non è un file .png
400 Bad Request Conversione dell'immagine non riuscita (file corrotto o non supportato)
401 Unauthorized Chiave API / token JWT mancante o non valido
402 Payment Required Quota mensile di ops esaurita
402 Payment Required Limite di storage 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#

L'API da PNG a SVG vettorizza la mia immagine?#

No. Questo endpoint incorpora il PNG raster all'interno di un contenitore SVG come data URI base64 in un elemento <image> SVG. Non traccia né converte l'immagine in percorsi vettoriali.

Perché il mio file SVG di output è più grande del PNG di input?#

Il PNG viene codificato in base64 quando viene incorporato nell'SVG, il che aggiunge circa il 33% di overhead, quindi il file di output è più grande dell'input.

La trasparenza del PNG viene preservata quando viene incorporato in un SVG?#

Sì. La trasparenza del PNG viene preservata nei dati incorporati, e le dimensioni dell'SVG e il viewBox corrispondono alle dimensioni in pixel dell'immagine originale.

Come converto PNG in SVG con una API REST?#

Invia una richiesta POST a /v1/convert/png-to-svg con il tuo file .png come multipart/form-data, autenticandoti tramite X-API-Key o un token JWT Authorization: Bearer. Ricevi i byte dell'SVG, oppure un presigned_url in JSON quando direct_download=false.

Perché l'API restituisce 400 Bad Request?#

Una risposta 400 Bad Request significa che il file caricato non è un file .png, oppure che la conversione dell'immagine non è riuscita perché il file è corrotto o non supportato.