# Bilder konvertieren, skalieren oder mit Wasserzeichen versehen

Robot: `/image/resize`

🤖/image/resize skaliert und beschneidet Bilder, ändert ihre Farbgebung und Drehung und versieht sie mit Text und Wasserzeichen.

Phase: ga

## Anwendungsbeispiel

Hochgeladene Bilder auf eine Breite von 200 px skalieren und dabei das ursprüngliche Seitenverhältnis beibehalten:

```json
{
  "steps": {
    "resized": {
      "robot": "/image/resize",
      "use": ":original",
      "width": 200
    }
  }
}
```

## Parameter

* `interpolate`: Steuert, ob einzelne Robot-Anweisungsfelder Assembly Variables interpolieren.

  Standardmäßig interpolieren die meisten Robot-Anweisungsfelder Assembly Variables. Mit dem Wert `false` behandeln Sie alle Anweisungsfelder als Literaltext. Wenn Sie stattdessen einen einzelnen Feldpfad auf `false` setzen, wird nur dieses Feld als Literaltext behandelt. Bei Feldern eines bestimmten Robots, die standardmäßig als Literaltext behandelt werden, aktivieren Sie die Interpolation wieder, indem Sie hierfür `true` festlegen oder für den jeweiligen Feldpfad den Wert `true` verwenden.

  Verwenden Sie Feldnamen wie `path` oder für verschachtelte Objekte Punktpfade wie `ffmpeg.vf` als Pfadangabe.

* `output_meta`: Damit können Sie eine Reihe von Metadaten festlegen, deren Berechnung mehr CPU-Ressourcen beansprucht. Sie sind daher standardmäßig deaktiviert, damit Ihre Assemblies schnell verarbeitet werden.

  Für Bilder können Sie diesem Objekt den Eintrag `"has_transparency": true` hinzufügen, um zu ermitteln, ob das Bild transparente Bereiche enthält. Mit dem Eintrag `"dominant_colors": true` können Sie außerdem ein Array mit hexadezimalen Farbcodes aus dem Bild extrahieren.

  Für Bilder können Sie auch den Eintrag `"blurhash": true` hinzufügen, um einen [BlurHash](https://blurha.sh) zu extrahieren – eine kompakte Darstellung eines Platzhalters für das Bild, mit der Sie eine unscharfe Vorschau anzeigen können, während das vollständige Bild geladen wird.

  Für Videos können Sie den Parameter `"colorspace": true` hinzufügen, um den Farbraum des Ausgabevideos zu extrahieren.

  Für Videos können Sie außerdem den Eintrag `"interlaced": true` hinzufügen, um zu erkennen, ob das Video im Zeilensprungverfahren vorliegt. Dazu wird die ressourcenschonende ffprobe-Option `field_order` mit einem begrenzten Stichprobendurchlauf mithilfe von `idet` über die ersten Frames der Quelle kombiniert. Die Ergebnisse `interlaced` und `field_order` sowie das Diagnoseobjekt `interlace_detection` werden dabei unter `file.meta` ausgegeben. Dies ist rechenintensiv und wird entsprechend abgerechnet.

  Für Audio können Sie den Eintrag `"mean_volume": true` hinzufügen, um einen einzelnen Wert für die durchschnittliche Lautstärke der Audiodatei zu erhalten.

  Sie können diesen Parameter auch auf `false` setzen, um die Metadatenextraktion zu überspringen und das Transcoding zu beschleunigen.

* `user_meta`: Fügt jeder von diesem Robot ausgegebenen Datei benutzerdefinierte Metadaten hinzu, ohne den Dateiinhalt zu verändern.

  Die Werte werden mit allen bereits in der Eingabedatei enthaltenen `user_meta` zusammengeführt. Wenn beide Objekte denselben Schlüssel enthalten, hat der Wert dieses Robots Vorrang. Assembly Variables werden unterstützt, zum Beispiel `{ "internal_file_id": "${file.id}" }`.

* `result`: Ob die Ergebnisse dieses Steps im Assembly Status JSON enthalten sein sollen

* `queue`: Wenn Sie die Queue auf „batch“ setzen, wird die Priorität der Jobs für diesen Step manuell herabgestuft. So vermeiden Sie, Priority Job Slots für Jobs zu belegen, die keine Wartezeit von null in der Queue benötigen.

* `force_accept`: Erzwingt, dass ein Robot einen Dateityp akzeptiert, den er sonst ignorieren würde.

  Standardmäßig ignorieren Robots Dateien, deren Typ sie nicht kennen.
  [🤖/video/encode](/de/docs/robots/video-encode.md) ignoriert beispielsweise problemlos Eingabebilder.

  Wenn Sie den Parameter `force_accept` auf `true` setzen, können Sie erzwingen, dass Robots alle übergebenen Dateien akzeptieren.
  Dies führt in der Regel zu Fehlern und sollte nur zur Fehlersuche oder zur Behandlung von Grenzfällen verwendet werden.

* `ignore_errors`: Fehler in bestimmten Verarbeitungsphasen ignorieren.

  Wenn Sie hierfür `["meta"]` festlegen, ignoriert der Robot Fehler bei der Metadatenextraktion.

  Wenn Sie hierfür `["execute"]` festlegen, ignoriert der Robot Fehler während der Hauptausführungsphase.

  Wenn Sie hierfür `true` festlegen, entspricht dies `["meta", "execute"]` und Fehler in beiden Phasen werden ignoriert.

* `use`: Gibt an, welche Steps als Eingabe verwendet werden sollen.

  * Sie können beliebige Namen für Steps wählen, außer `":original"` (reserviert für von Transloadit verarbeitete Benutzer-Uploads)
  * Sie können mehrere Steps mithilfe von Arrays als Eingabe angeben:
    ```json
    {
      "use": [
        ":original",
        "encoded",
        "resized"
      ]
    }
    ```
  * Sie können Eingabe-Steps außerdem mit `as` kennzeichnen, um Robots die semantische Funktion zu übermitteln:
    ```json
    {
      "use": [
        {
          "name": ":original",
          "as": "image"
        },
        {
          "name": ":original",
          "as": "mask"
        }
      ]
    }
    ```

  > [!Tip]
  > Das ist wahrscheinlich alles, was Sie über `use` wissen müssen. Sie können sich jedoch auch die [erweiterten Anwendungsfälle](/de/docs/topics/use-parameter.md) ansehen.

* `imagemagick_stack`

* `format`: Das Ausgabeformat des bearbeiteten Bildes.

  Zu den wichtigsten verfügbaren Formaten gehören `"jpg"`, `"png"`, `"gif"`, `"tiff"` und `"jxl"` für JPEG XL. Eine vollständige Übersicht aller Formate, die wir schreiben können, finden Sie in [unserer Liste unterstützter Bildformate](/de/docs/supported-formats/image-formats.md).

  Bei `null` (Standardwert) wird das Format des Eingabebildes als Ausgabeformat verwendet.

  Wenn Sie in `"pdf"` konvertieren möchten, verwenden Sie stattdessen bitte [🤖/document/convert](/de/docs/robots/document-convert.md).

* `width`: Breite des Ergebnisses in Pixeln. Falls nicht angegeben, wird standardmäßig die Breite des Originals verwendet.

* `height`: Höhe des neuen Bildes in Pixeln. Falls nicht angegeben, wird standardmäßig die Höhe des Eingabebildes verwendet.

* `resize_strategy`: Weitere Informationen finden Sie in der Liste der verfügbaren [Skalierungsstrategien](/de/docs/topics/resize-strategies.md).

* `zoom`: Wenn Sie hierfür `false` festlegen, werden kleinere Bilder nicht auf die gewünschte Breite und Höhe gestreckt. Einzelheiten zu den Auswirkungen der Vergrößerung bei Ihrer bevorzugten Skalierungsstrategie finden Sie in der Liste der verfügbaren [Skalierungsstrategien](/de/docs/topics/resize-strategies.md).

* `crop`: Geben Sie ein Objekt mit den Koordinaten der oberen linken und unteren rechten Ecke des Rechtecks an, das aus dem Originalbild beziehungsweise den Originalbildern ausgeschnitten werden soll. Der Ursprung des Koordinatensystems liegt in der oberen linken Bildecke. Die Werte können Ganzzahlen für absolute Pixelwerte oder Strings für prozentuale Werte sein.

  Beispiel:

  ```json
  {
    "x1": 80,
    "y1": 100,
    "x2": "60%",
    "y2": "80%"
  }
  ```

  Damit wird aus einem Bild mit 1000×1000 Pixeln der Bereich von `(80, 100)` bis `(600, 800)` ausgeschnitten. Das Ergebnis ist ein Quadrat mit einer Breite von 520px und einer Höhe von 700px. Wenn `crop` gesetzt ist, werden die Parameter für Breite und Höhe ignoriert und `resize_strategy` wird automatisch auf `crop` gesetzt.

  Sie können auf ähnliche Weise auch einen JSON-String eines solchen Koordinatenobjekts verwenden:

  ```json
  "{\"x1\": <Integer>, \"y1\": <Integer>, \"x2\": <Integer>, \"y2\": <Integer>}"
  ```

  Informationen zum Zuschneiden um menschliche Gesichter finden Sie unter [🤖/image/facedetect](/de/docs/robots/image-facedetect.md).

* `gravity`: Die Richtung, aus der das Bild zugeschnitten wird, wenn `"resize_strategy"` auf `"crop"` oder `"fillcrop"` gesetzt ist, aber keine Koordinaten für den Zuschnitt definiert sind.

  Für einen automatischen Zuschnitt auf den relevanten Bildbereich können Sie auch `"entropy"` oder `"attention"` verwenden. `"entropy"` behält den Bereich mit der höchsten Shannon-Entropie bei, während `"attention"` Bereiche mit hoher Leuchtdichtefrequenz, Sättigung und Hinweisen auf Hauttöne bevorzugt.

* `strip`: Entfernt alle Metadaten aus dem Bild. So können Sie Thumbnails möglichst klein halten.

* `alpha`: Ermöglicht die Steuerung des Alpha-/Matte-Kanals eines Bildes.

* `preclip_alpha`: Ermöglicht die Steuerung des Alpha-/Matte-Kanals eines Bildes, bevor der Beschneidungspfad über `clip: true` angewendet wird.

* `flatten`: Führt alle Ebenen auf dem angegebenen Hintergrund zusammen, um bei der Konvertierung transparenter Formate in nicht transparente Formate bessere Ergebnisse zu erzielen, wie in der [ImageMagick-Dokumentation](https://www.imagemagick.org/script/command-line-options.php#layers) erläutert.

  Um Animationen beizubehalten, werden GIF-Dateien bei der Einstellung `true` nicht zusammengeführt. Verwenden Sie den Parameter `frame`, um GIF-Animationen zusammenzuführen.

* `correct_gamma`: Verhindert Gammafehler, die [bei vielen Algorithmen zur Bildskalierung häufig auftreten](https://www.4p8.com/eric.brasseur/gamma.html).

* `quality`: Steuert die Bildkomprimierung für JPG- und PNG-Bilder. Weitere Informationen finden Sie auch unter [🤖/image/optimize](/de/docs/robots/image-optimize.md).

* `adaptive_filtering`: Steuert die Bildkomprimierung für PNG-Bilder. Die Einstellung auf `true` führt zu einer kleineren Dateigröße, verlängert jedoch die Verarbeitungszeit. Es wird empfohlen, diese Option deaktiviert zu lassen.

* `background`: Entweder der Hexadezimalcode oder der [Name](https://www.imagemagick.org/script/color.php#color_names) der Farbe, mit der der Hintergrund gefüllt wird (verwendet für die Skalierungsstrategie `pad`).

  **Hinweis:** Standardmäßig wird der Hintergrund transparenter Bilder in Weiß geändert. Um die Transparenz beizubehalten, setzen Sie `"background"` auf `"none"`.

* `frame`: Verwenden Sie diesen Parameter bei animierten GIF-Dateien, um anzugeben, welcher Frame des GIFs für den Vorgang verwendet wird. Geben Sie `1` für den ersten Frame, `2` für den zweiten Frame usw. an. `null` steht für alle Frames.

* `colorspace`: Legt den Farbraum des Bildes fest. Details zu den verfügbaren Werten finden Sie in der [ImageMagick-Dokumentation](https://www.imagemagick.org/script/command-line-options.php#colorspace). Falls Sie bisher `"RGB"` verwendet haben, empfehlen wir seit 2014-02-04 stattdessen `"sRGB"`. ImageMagick versucht möglicherweise, anhand der Farben eines Bildes den effizientesten `colorspace` zu ermitteln, und verwendet standardmäßig z. B. `"Gray"`. Um Farben zu erzwingen, müssen Sie diesen Parameter möglicherweise zusammen mit `type: "TrueColor"` verwenden.

* `type`: Legt den Farbtyp des Bildes fest. Einzelheiten zu den verfügbaren Werten finden Sie in der [ImageMagick-Dokumentation](https://www.imagemagick.org/script/command-line-options.php#type). Wenn Sie `colorspace` verwenden, versucht ImageMagick möglicherweise, anhand der Farben eines Bildes den effizientesten Farbtyp zu ermitteln, und verwendet standardmäßig beispielsweise `"Gray"`. Um Farben zu erzwingen, können Sie diesen Parameter beispielsweise auf `"TrueColor"` setzen.

* `sepia`: Wendet einen Sepiaeffekt in Prozent an.

* `rotation`: Legt fest, ob das Bild gedreht werden soll. Geben Sie eine beliebige Zahl an, um den Drehwinkel in Grad festzulegen, zum Beispiel `90`, `180`, `270`, `360` oder einen präzisen Wert wie `2.9`. Verwenden Sie den Wert `true` oder `"auto"`, um falsch gedrehte Bilder oder Bilder, deren Ausrichtung von den EXIF-Rotationseinstellungen abhängt, automatisch zu drehen. Verwenden Sie andernfalls `false`, um die automatische Korrektur vollständig zu deaktivieren.

* `compress`: Legt die Pixelkomprimierung beim Schreiben des Bildes fest. Die Komprimierung ist standardmäßig deaktiviert.

  Weitere Informationen finden Sie auch unter [🤖/image/optimize](/de/docs/robots/image-optimize.md).

* `blur`: Legt eine gaußsche Unschärfe mit einem Wert im Format `{radius}x{sigma}` fest. Der Radiuswert gibt die Größe des Bereichs an, den der Operator beim Verteilen von Pixeln berücksichtigen soll. Er sollte üblicherweise entweder `"0"` oder mindestens das Zweifache des Sigmawerts betragen. Der Sigmawert gibt näherungsweise an, über wie viele Pixel das Bild „verteilt“ wird. Sie können ihn sich als Größe des Pinsels vorstellen, mit dem das Bild weichgezeichnet wird. Diese Zahl ist ein Gleitkommawert, sodass auch kleine Werte wie `"0.5"` verwendet werden können.

* `blur_regions`: Gibt ein Array aus Ellipsenobjekten an, deren Bildbereiche weichgezeichnet werden sollen. Jedes Objekt besitzt die folgenden Schlüssel: `x`, `y`, `width`, `height`. Wenn `blur_regions` einen Wert besitzt, wird der Parameter `blur` für jeden Bereich als Stärke der Unschärfe verwendet.

* `brightness`: Erhöht oder verringert die Helligkeit des Bildes mithilfe eines Multiplikators. Beispielsweise erhöht `1.5` die Helligkeit um 50 %, während `0.75` sie um 25 % verringert.

* `saturation`: Erhöht oder verringert die Sättigung des Bildes mithilfe eines Multiplikators. Beispielsweise erhöht `1.5` die Sättigung um 50 %, während `0.75` sie um 25 % verringert.

* `hue`: Ändert den Farbton durch Drehen der Bildfarben. Der Wert `100` bewirkt keine Änderung, während `0` und `200` die Farben im Bild invertieren.

* `contrast`: Passt den Kontrast des Bildes an. Der Wert `1` bewirkt keine Änderung. Werte unter `1` verringern den Kontrast, wobei `0` dem minimalen Kontrast entspricht. Werte über `1` erhöhen den Kontrast, wobei `2` dem maximalen Kontrast entspricht. Dies funktioniert wie der Parameter `brightness`.

* `watermark_url`: Eine URL, die auf ein PNG-Bild verweist, das über dieses Bild gelegt werden soll. Beachten Sie, dass Sie das Wasserzeichen auch [über einen anderen Assembly Step bereitstellen können](/de/docs/topics/use-parameter.md#supplying-the-watermark-via-an-assembly-step). Mit einem Wasserzeichen können Sie ein Bild über ein anderes legen. Dies wird üblicherweise für Logos verwendet.

* `watermark_position`: Die Position, an der das Wasserzeichen platziert wird. Verfügbar sind die Optionen `"center"`, `"top"`, `"bottom"`, `"left"` und `"right"`. Sie können Optionen auch kombinieren, zum Beispiel `"bottom-right"`.

  Sie können auch ein Array möglicher Werte angeben. In diesem Fall wird ein Wert nach dem Zufallsprinzip ausgewählt, zum Beispiel `[ "center", "left", "bottom-left", "bottom-right" ]`.

  Mit dieser Einstellung wird das Wasserzeichen in der angegebenen Ecke platziert. Um das Wasserzeichen um eine bestimmte Pixelanzahl zu versetzen, müssen Sie den Abstand zum Bild selbst hinzufügen.

* `watermark_x_offset`: Der x-Versatz in Pixeln, um den das Wasserzeichen relativ zu der durch `watermark_position` bestimmten Position verschoben wird.

  Die Werte können positiv oder negativ sein und führen abhängig vom Parameter `watermark_position` zu unterschiedlichen Ergebnissen. Positive Werte verschieben das Wasserzeichen näher zur Bildmitte, negative Werte weiter von der Bildmitte weg.

* `watermark_y_offset`: Der y-Versatz in Pixeln, um den das Wasserzeichen relativ zu der durch `watermark_position` bestimmten Position verschoben wird.

  Die Werte können positiv oder negativ sein und führen abhängig vom Parameter `watermark_position` zu unterschiedlichen Ergebnissen. Positive Werte verschieben das Wasserzeichen näher zur Bildmitte, negative Werte weiter von der Bildmitte weg.

* `watermark_size`: Die Größe des Wasserzeichens als Prozentsatz.

  Beispielsweise bedeutet der Wert `"50%"`, dass die Größe des Wasserzeichens 50 % der Größe des Bildes entspricht, auf dem es platziert wird. Die genaue Größenanpassung hängt außerdem von `watermark_resize_strategy` ab.

* `watermark_resize_strategy`: Verfügbare Werte sind `"fit"`, `"min_fit"`, `"stretch"` und `"area"`.

  Um die Funktionsweise der Strategien zur Größenanpassung zu erläutern, nehmen wir an, dass unser Zielbild 800×800 Pixel groß und unser Wasserzeichenbild 400×300 Pixel groß ist. Nehmen wir außerdem an, dass der Parameter `watermark_size` auf `"25%"` gesetzt ist.

  Bei der Größenanpassungsstrategie `"fit"` wird das Wasserzeichen so skaliert, dass seine längere Seite 25 % der entsprechenden Bildseite einnimmt. Die andere Seite wird entsprechend dem Seitenverhältnis des Wasserzeichenbildes skaliert. Bei unserem Wasserzeichen ist die Breite die längere Seite, und 25 % der Bildgröße wären 200px. Daher würde die Größe des Wasserzeichens auf 200×150 Pixel geändert. Wäre `watermark_size` auf `"50%"` gesetzt, würde die Größe auf 400×300 Pixel geändert, das Wasserzeichen also in seiner ursprünglichen Größe belassen.

  Bei der Größenanpassungsstrategie `"min_fit"` wird das Wasserzeichen so skaliert, dass seine kürzere Seite 25 % der entsprechenden Bildseite einnimmt. Die andere Seite wird entsprechend dem Seitenverhältnis des Wasserzeichenbildes skaliert. Bei unserem Wasserzeichen ist die Höhe die kürzere Seite, und 25 % der Bildgröße wären 200px. Daher würde die Größe des Wasserzeichens auf 267×200 Pixel geändert. Wäre `watermark_size` auf `"50%"` gesetzt, würde die Größe auf 533×400 Pixel geändert, das Wasserzeichen wäre also größer als in seiner ursprünglichen Größe.

  Bei der Größenanpassungsstrategie `"stretch"` wird das Wasserzeichen gestreckt, also ohne Beibehaltung seines Seitenverhältnisses skaliert, sodass beide Seiten jeweils 25 % der entsprechenden Bildseite einnehmen. Da unser Bild 800×800 Pixel groß ist, würde die Größe des Wasserzeichens bei einer Wasserzeichengröße von 25 % auf 200×200 Pixel geändert. Seine Höhe würde gestreckt erscheinen, da die Größe bei Beibehaltung des Seitenverhältnisses stattdessen auf 200×150 Pixel geändert würde.

  Bei der Größenanpassungsstrategie `"area"` wird die Größe des Wasserzeichens unter Beibehaltung seines Seitenverhältnisses so geändert, dass es `"xx%"` der Bildfläche abdeckt. Der Wert von `watermark_size` wird als prozentualer Flächenanteil verwendet.

* `watermark_opacity`: Die Deckkraft des Wasserzeichens, wobei `0.0` vollständig transparent und `1.0` vollständig deckend ist.

  Beispielsweise bedeutet der Wert `0.5`, dass das Wasserzeichen zu 50 % transparent ist und das darunterliegende Bild durchscheint. Dies eignet sich für dezentes Branding oder wenn das Wasserzeichen weniger auffällig sein soll.

* `watermark_repeat_x`: Wenn der Wert auf `true` gesetzt ist, wird das Wasserzeichen horizontal über die gesamte Breite des Bildes wiederholt.

  Dies eignet sich zum Erstellen gekachelter Wasserzeichenmuster, die das gesamte Bild abdecken und das Herausschneiden des Wasserzeichens erschweren.

* `watermark_repeat_y`: Wenn der Wert auf `true` gesetzt ist, wird das Wasserzeichen vertikal über die gesamte Höhe des Bildes wiederholt.

  Dies eignet sich zum Erstellen gekachelter Wasserzeichenmuster, die das gesamte Bild abdecken. Die Einstellung kann mit `watermark_repeat_x` kombiniert werden, um das Muster in beide Richtungen zu kacheln.

* `text`: Textüberlagerungen, die auf das Bild angewendet werden sollen. Sie können entweder ein einzelnes Textobjekt oder ein Array von Textobjekten angeben. Jedes Textobjekt enthält Textregeln. Die folgenden Textparameter sind als Eigenschaften Ihrer Textüberlagerungen vorgesehen. Hier ein Beispiel:

  ```json
  "watermarked": {
    "use": "resized",
    "robot": "/image/resize",
    "text": [
      {
        "text": "© 2018 Transloadit.com",
        "size": 12,
        "font": "Ubuntu",
        "color": "#eeeeee",
        "valign": "bottom",
        "align": "right",
        "x_offset": 16,
        "y_offset": -10
      }
    ]
  }
  ```

* `progressive`: Wenn diese Option auf `true` gesetzt ist, wird das Bild mit Zeilensprung gespeichert, sodass es in Browsern schrittweise geladen wird. Statt das Bild von oben nach unten darzustellen, zeigt der Browser zunächst eine unscharfe Version mit niedriger Auflösung an, die beim Eintreffen der Daten schnell durch das eigentliche Bild ersetzt wird. Dies verbessert die Benutzererfahrung erheblich, erhöht jedoch die Dateigröße um etwa 10 %.

* `transparent`: Macht diese Farbe innerhalb des Bildes transparent. Beispiel: `"255,255,255"`.

* `trim_whitespace`: Diese Einstellung legt fest, ob zusätzlicher Leerraum um das Bild zuerst entfernt werden soll. Wenn Sie den Wert auf `true` setzen, entfernt dieser Parameter alle Ränder, deren Farbe exakt der Farbe der Eckpixel entspricht.

* `clip`: Wenden Sie den Beschneidungspfad auf andere Vorgänge bei der Größenänderung an, sofern einer vorhanden ist. Bei der Einstellung `true` wird automatisch der erste Beschneidungspfad verwendet. Wenn Sie einen String angeben, wird ein Beschneidungspfad mit diesem Namen gesucht.

* `negate`: Ersetzen Sie jedes Pixel durch seine Komplementärfarbe und invertieren Sie so das Bild. Dies ist besonders beim Testen der Beschneidung hilfreich.

* `clut`: Wendet ein Bild mit einer Farbnachschlagetabelle (CLUT) an, um die Farben des Eingabebilds mithilfe des Operators `-clut` von ImageMagick neu zuzuordnen. Wenn diese Option aktiviert ist, muss über den Parameter `use` mit `"as": "clut"` eine zweite Eingabedatei bereitgestellt werden.

  Dieser Vorgang wird derzeit über den convert-Stack von ImageMagick ausgeführt (nicht über den image-resizer-Daemon), selbst wenn `stack: "daemon"` angefordert wird.

  Bei mehreren Eingaben sollten Sie Ihr primäres Bild als `"as": "base"` bereitstellen. Wenn kein Alias `base` ausdrücklich festgelegt ist, verwendet Transloadit die erste nicht als Hilfsdatei gekennzeichnete Eingabe als primäres Bild. Dabei handelt es sich um eine Datei, die weder als `watermark` noch als `clut` gekennzeichnet ist.

  Das CLUT-Bild dient als Verlaufszuordnung: Die Farbkanäle jedes Pixels im Eingabebild werden abhängig von der Kanalintensität durch die entsprechende Farbe aus dem CLUT-Bild ersetzt. Dies ist eine leistungsstarke Technik zur Farbkorrektur, die in Fotografie- und Design-Workflows weit verbreitet ist.

  Beispiel:

  ```json
  {
    "steps": {
      ":original": {
        "robot": "/upload/handle"
      },
      "lut_image": {
        "robot": "/upload/handle"
      },
      "color_graded": {
        "robot": "/image/resize",
        "use": {
          "steps": [
            { "name": ":original", "as": "base" },
            { "name": "lut_image", "as": "clut" }
          ]
        },
        "clut": true
      }
    }
  }
  ```

* `density`: Während die Qualität im Arbeitsspeicher und die Farbtiefe des Dateiformats die Farbauflösung bestimmen, bezeichnet die Dichte eines Bildes dessen räumliche Auflösung. Sie wird in Pixeln pro Zoll angegeben und legt fest, wie weit die einzelnen Pixel auseinanderliegen beziehungsweise wie groß sie sind. Damit bestimmt sie die tatsächliche Größe des Bildes bei der Anzeige auf Geräten oder beim Drucken.

  Sie können den Dichteparameter auf einen bestimmten numerischen Wert für die Breite im Format `width` oder auf ein Breiten-Höhen-Paar im Format `width`x`height` festlegen.

  Wenn Ihr konvertiertes Bild unscharf ist, versuchen Sie bitte, die Dichte zu erhöhen.

* `monochrome`: Wandeln Sie das Bild in Schwarz-Weiß um. Dies ist eine Kurzform dafür, den Farbraum auf Gray und den Typ auf Bilevel festzulegen.

* `shave`: Entfernen Sie Pixel von den Bildrändern. Geben Sie den Wert im Format `width` oder `width`x`height` an, um die Anzahl der Pixel festzulegen, die an jeder Seite entfernt werden sollen.
