# Bilder konvertieren

Vektorisieren Sie ein Bild als SVG oder exportieren Sie PNG, PDF, TIFF und PPTX, auch für Flussdiagramme.

Quelle: https://scifig.ai/de/docs/api/image-conversions

## JSON-Anfrageinhalt

`POST /images/conversions`. Erforderlicher Berechtigungsbereich: `figures:generate`.

| Feld | Typ | Erforderlich | Standard | Regeln |
| --- | --- | --- | --- | --- |
| image | string | ja | — | Eine PNG- oder JPEG-`file_id` oder die SVG-Ausgabe eines Flussdiagramms bis 20 MB; `svg` akzeptiert auch WebP |
| format | string | ja | — | `svg`, `png`, `pdf`, `tiff` oder `pptx` |
| vector_mode | string | nein | `editable_text` | Nur für `svg`: `editable_text` oder `full_vector` |
| dpi | integer | nein | 300 | Nicht für `svg`: 300, 600 oder 1000 |
| width | integer | nein | 2048 | Nur für Flussdiagramm-SVG-Quelldateien: lange Seite in Pixeln, 256–4096, insgesamt höchstens 4,194,304 Pixel |

## SVG-Vektorisierung

- Kostet 150 Credits und erfordert einen kostenpflichtigen Tarif. Verwendet denselben Vektorisierer wie die Canvas-Bearbeitung auf der Website. Die Quelle ist ein PNG-, JPEG- oder WebP-Bild.
- `editable_text` erhält Text als bearbeitbaren SVG-Text; `full_vector` zeichnet alles einschließlich Text als Pfade nach.
- Die Vektorisierung läuft als Auftrag. Credits werden erst reserviert, nachdem die Vektorisierungsaufgabe angenommen wurde. Die `credits` des Auftrags werden aus dem Ledger zurückgelesen. Eine fehlgeschlagene Vektorisierung wird erstattet und gibt für diesen Schlüssel `TASK_FAILED` zurück.
- Die Konvertierung eines bereits vektorisierten Bildes gibt das frühere SVG zurück und kostet diesen Auftrag nichts.
- Ist der Vektorisierer vor dem Aufgabenstart vorübergehend nicht verfügbar, lautet die Antwort `503 SERVICE_UNAVAILABLE` mit `Retry-After`: Wiederholen Sie die Anfrage mit demselben Schlüssel.

## PNG, PDF, TIFF und PPTX

- Kostenlos, bis zu 200 Konvertierungen pro Konto und Tag. Sie werden sofort abgeschlossen; die Antwort ist ein Auftrag mit Status `succeeded`.
- Eine Konvertierung zählt erst nach erfolgreicher Prüfung aller Eingaben zum Tageskontingent und nur einmal pro Idempotency-Key. Eine Wiederholung mit demselben Schlüssel zählt nicht erneut. Nach Ausschöpfen des Kontingents lautet die Antwort `429 RATE_LIMITED` mit `details.reason = DAILY_CONVERSION_LIMIT` und `Retry-After` bis zum Zurücksetzen des Tagesfensters.
- Die Quelle ist ein PNG- oder JPEG-Bild oder die SVG-Ausgabe eines Flussdiagramms. WebP wird nicht akzeptiert: `UNSUPPORTED_SOURCE_FORMAT`.
- Eine Datei, deren kodierte Ausgabe 24 MiB überschreiten würde, wird mit `400 INVALID_REQUEST` und `OUTPUT_TOO_LARGE` abgelehnt. Konvertieren Sie ein kleineres Bild.
- `dpi` wird in die Datei geschrieben und legt die physische Seitengröße von PDF und PPTX fest. Die Pixelzahl wird nicht geändert. Für mehr Pixel [vergrößern](/de/docs/api/image-upscales) Sie das Bild zuerst.
- PNG und TIFF erfordern eine PNG-Quelle; PDF und PPTX akzeptieren auch JPEG. TIFF verwendet verlustfreie Deflate-Komprimierung.
- Die PPTX enthält eine Folie mit dem Bild, keine bearbeitbaren Formen.

## Flussdiagramme exportieren

Die SVG-Ausgabe eines Flussdiagramms kann in PNG, PDF, TIFF oder PPTX konvertiert werden. Der Server rendert sie mit Arial- und Noto-Schriften mit `width` Pixeln an der langen Seite: standardmäßig 2048, höchstens 4096 und insgesamt höchstens 4,194,304 Pixel; ein quadratisches Diagramm darf höchstens 2048 px groß sein. Größere Anfragen führen zu `400 INVALID_REQUEST` mit `RENDER_TOO_LARGE`. Text, den die Schriften nicht darstellen können, wird mit `400 INVALID_REQUEST` und `SVG_NOT_RENDERABLE` abgelehnt, statt als leere Kästchen gezeichnet zu werden. Wenn der Renderer selbst fehlschlägt, lautet die Antwort `503 SERVICE_UNAVAILABLE` mit `SVG_RENDERER_UNAVAILABLE` und `Retry-After`: Wiederholen Sie die Anfrage mit demselben Schlüssel. Andere SVG-Dateien sind als Eingaben nicht möglich.

## cURL

```bash
curl -X POST https://scifig.ai/api/v1/images/conversions \
  -H "Authorization: Bearer $SCIFIG_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Prefer: wait=25" \
  -H "Content-Type: application/json" \
  -d '{
    "image": "<file_id>",
    "format": "pdf",
    "dpi": 600
  }'
```

## JavaScript

```javascript
const response = await fetch('https://scifig.ai/api/v1/images/conversions', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.SCIFIG_API_KEY}`,
    'Idempotency-Key': crypto.randomUUID(),
    Prefer: 'wait=25',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "image": "<file_id>",
    "format": "pdf",
    "dpi": 600
  }),
});
const result = await response.json();
console.log(response.status, result);
```

## Python

```python
import os
import uuid

import requests

headers = {
    "Authorization": f"Bearer {os.environ['SCIFIG_API_KEY']}",
    "Idempotency-Key": str(uuid.uuid4()),
    "Prefer": "wait=25",
}
response = requests.post(
    "https://scifig.ai/api/v1/images/conversions",
    headers=headers,
    json={
        "image": "<file_id>",
        "format": "pdf",
        "dpi": 600
    },
    timeout=60,
)
print(response.status_code, response.json())
```
