Zum Inhalt

Aufbau der Kunden-JSON

Eine Kunden-JSON beschreibt einen Kundenstamm: Dateiklassifizierung, Eingangsrollen, Bildvorgaben und einzelne Print-, Web- und Videoausgänge. Die vollständige Feldliste des statisch gelesenen Readers steht in der Feldreferenz. Sie ersetzt kein EXE-validiertes Schema.

Dateiablage und Aktivierung

Im gelesenen IC/Form1.cs (Literalrevision 20261013) entsteht der Kundenordner aus Application.StartupPath plus Settings\JsonKunden\ (120–121). Geladen werden dort *.json ausschließlich im obersten Verzeichnis (TopDirectoryOnly, 204); jeder gefundene Dateiname wird übernommen und sein root bereits beim ersten Scan gelesen (214–237). Es gibt in diesem Reader keinen frei erfundenen fest gebundenen Kundendateinamen und keinen Rootkey active, mit dem man die ganze Datei deaktivieren könnte.

Das Handbuch ImageConvert-4 (09.10.2026), physisch 13/21, nennt verkürzt JsonGeneral/JsonKunden unter dem Programmverzeichnis. Das ist nicht dieselbe exakte Ablageangabe wie der Source mit Settings\. Den tatsächlichen Lieferstand vor Änderungen klären; nicht mehrere parallele aktive Kopien anlegen. Die globalen Einstellungen haben einen getrennten Reader und eine getrennte Ablage.

mainFolder.* sind dagegen kundenbezogene Datenordner, keine Orte der JSON-Datei. root wird im Reader von Leerzeichen auf Unterstriche umgeschrieben und um einen abschließenden Backslash ergänzt (562–563). Relative Ordnerteile werden mit dieser Basis kombiniert. Das ist keine Pfadvalidierung oder Sicherheitsfreigabe.

Vollstruktur des effektiven Readers

Die folgende Struktur zeigt alle normalisierten gelesenen Wertpfade einschließlich der Listenhelfer. Sie zeigt keine Beispielwerte oder Defaults. [] steht für einen Listeneintrag; konkrete Indexrollen stehen darunter. mainFolder.video.rootFolder ist separat als Pflichtprüfungs-Konflikt beschrieben, weil dessen Wert gerade nicht übernommen wird.

customerActionsVor[]
customerActions[]
customerMail
  customerAddress
  intro
  refereceLine
  salutation
customerScriptsVor[]
customerScripts[]
cutoutResult
fileExtensions
  imageExtensions[]
  nonImageExtensions[]
  printExtensions[]
  videoExtensions[]
imageDefaults
  canvas
    heightPercent
    horizontalAlignment
    verticalAlignment
    widthPercent
  printQuality
    behaviorIfTooSmall
    limitImageToSourceSize
    minPixelEdge
  shadow
    angleDegrees
    distancePx
    opacityPercent
    sizePx
    spreadPercent
  webQuality
    limitImageToSourceSize
mainFolder
  errorFolder
  inbox
    rootFolder
    subFolder[]
      actionsVor[]
      actions[]
      deleteFolders
      name
      scriptsVor[]
      scripts[]
  logFolder
  nopicture
    log
    other
    rootFolder
  print
    rootFolder
    subFolder[]
      actionsVor[]
      actions[]
      active
      colorProfil
      format
      heightPx
      limitImageToSourceSize
      name
      originalFolder
      resolution
      scriptsVor[]
      scripts[]
      specialSize
      widthPx
  video
    subFolder[]
      active
      format
      framesPersec
      heightPx
      imageFormat
      mindestens
      name
      schaltpfade_v[]
      specialSize
      widthPx
  web
    actionsVor[]
    actions[]
    colorProfil
    noTrim
    rootFolder
    scriptsVor[]
    scripts[]
    subFolder[]
      actionsVor[]
      actions[]
      active
      avif
        chromeSubsampling
        encoderSpeed
        imageDepth
        keepColorProfil
        keepExif
        keepXMP
        lossless
      canvas
        heightPercent
        horizontalAlignment
        verticalAlignment
        widthPercent
      colorProfil
      flatten
      format
      heightPx
      limitImageToSourceSize
      mindestens
      name
      noTrim
      qualityJPG
      resolution
      schaltpfade[]
      scriptsVor[]
      scripts[]
      specialSize
      webp
        keepExif
        keepPSExtras
        keepXMP
        lossless
      widthPx
name
root
webOptions
  gifOptions
    colorReduction
    colors
    dither
    ditherAmount
    interlaced
    lossy
    transparency
    transparencyAmount
    transparencyDither
    webSnap
  jpgOptions
    blur
    optimized
  png24Options
    interlaced
    transparency
  png8Options
    colorReduction
    colors
    dither
    ditherAmount
    interlaced
    transparency
    transparencyAmount
    transparencyDither
    webSnap
  switches
    transparentBeschneiden
    trim
    useWeissBeschneiden

Listen sind positionsgebunden

  • Inbox: [0] temp, [1] entry, [2] reentry, [3] entry_noprint, [4] reentry_noprint, [5] 90°, [6] 180°, [7] 270°, [8] refresh. Namen sind frei, die Rollen folgen der Position (580–593; Manual phys. 16). Temp kann beim Start vorhandene Dateien nach Error kopieren und löschen (596–609): nicht mit produktiven Daten ausprobieren.
  • Print: [0] enthält nur originalFolder. Ausgänge sind [1] bis [4]; alle vier Namen werden verlangt (621–651). Slot 2 hat eine eigene JPEG-Verarbeitung, format macht ihn nicht beliebig austauschbar. bleibt ist insbesondere für Print1, keine generelle Web-Originalarchivierung.
  • Web: ab [0]; der erste fehlende name beendet die Liste (1054–1058). Die vier Standardziele super/detail/list/thumb müssen laut Handbuch physisch 21 vorhanden sein. Die globale Dimension counter.maxWebOutputsPerCustomer begrenzt die internen Slots; sie ist kein Kundenkey.
  • Video: ebenfalls ab [0], Ende beim ersten fehlenden Namen (1181–1189). Exakte Keys framesPersec, imageFormat und im Source schaltpfade_v[]. Der Source übernimmt mainFolder.video.rootFolder nicht als Wert, obwohl die Pflicht-Präfixliste diesen Pfad verlangt; die Videobasis wird aus dem Webroot abgeleitet (516,765–775). Handbuch und Reader hier nicht still gleichsetzen.
  • Aktionen/Skripte: Listen mit maximal zehn zusammenhängenden Skalareinträgen; Vor vor, sonst nach dem jeweiligen Verarbeitungsschritt. Eingangslisten werden je Subfolder gelesen. Globale Printlisten kommen im Source aus Printslot 1, nicht aus mainFolder.print.actions/scripts*. Details: Aktionen auf Kundenebene, Print/Web-global, je Ausgang, je Eingang.

Was ist erforderlich, was ist optional?

Der Reader besitzt kein belastbares vollständiges JSON-Schema. Er wandelt Blattwerte in Strings um (8125–8141) und prüft eine Liste von Pflichtpräfixen mit Substringsuche (491–558). Manche Felder greift er unmittelbar ab, andere nur bei ContainsKey. Eine leere Struktur {} erzeugt selbst keinen Blattpfad und erfüllt damit nicht automatisch die Pflichtprüfung. Auch ein optional eingelesener String kann später für IndexOf oder EndsWith benötigt werden.

Darum steht der Status pro Feld in der Referenz: direkter Zugriff, bedingtes Einlesen, expliziter Fallback oder nur frischer C#-Arraywert. Beispielwerte werden niemals als Programmstandard ausgegeben. Fehlend/null/leer/[] sind nicht beliebig austauschbar. Insbesondere bei Booleans kein null anstelle false verwenden; bei Listen ist [null] kein leeres [].

Konkretes Optionsfragment: AVIF

Nur ein einzelnes Web-Ausgangsobjekt zur Veranschaulichung, keine vollständige Kundenkonfiguration. Die Nummer des Eintrags in mainFolder.web.subFolder[] bleibt separat festzulegen. encoderSpeed: 6 ist ein Beispiel, kein belegter Default und kein zugesicherter Wertebereich der installierten Photoshopversion.

{
  "name": "web_avif\\",
  "active": false,
  "widthPx": 1200,
  "heightPx": 1200,
  "specialSize": "no",
  "mindestens": false,
  "format": "avif",
  "qualityJPG": 80,
  "avif": {
    "keepColorProfil": false,
    "keepExif": false,
    "keepXMP": false,
    "lossless": false,
    "imageDepth": 8,
    "chromeSubsampling": "444",
    "encoderSpeed": 6
  }
}

Die Schreibweisen sind exakt sourcegelesen (1072–1078). Trotzdem ist keepColorProfil im Form1-Saver ohne belegten Verbraucher. imageDepth/chromeSubsampling werden zu Descriptorbezeichnern verkettet, nicht im Reader als Enum validiert. Kein zusätzliches webp-Objekt im selben Ausgang empfehlen: gemeinsame Variablen können AVIF-Werte überschreiben. WEBP lossless wird zwar eingelesen, aber Savewebp setzt fest compressionLossy (6525–6558). Siehe AVIF, WEBP und die Optionsfelder.

Neuere Themen und historische Schreibweisen

  • cutoutResult ist eine Freistelleignungsprüfung mit Skript und Infoflag19, kein automatisches Freistellen. Parameter und Voraussetzungen.
  • mindestens ist eine alternative Skalierungsregel (beide Kanten mindestens), kein Mindestqualitätswarnwert. Im Reader existiert außerdem ein Print/Web-Indexkonflikt; Video liest den Schalter ohne belegte spätere Nutzung. Exakte Grenzen.
  • colorProfil, nicht colorProfile: der Name wird für ConvertProfile verwendet. Historische Websiteanker bleiben, aber keine Readeraliase. Profilfeld.
  • framesPersec / imageFormat ersetzen historische Kleinschreibungen; Videoausgänge und Thumbnails.

Unveränderte Downloads sind historische Konfigurationsbeispiele. Nicht direkt als aktuelle Programmvorlage aktivieren. Diese Dokumentation führt keine Dateiaktivierung, keinen Produktlauf und keine Änderung einer Originalkonfiguration aus.

Quellen

Statischer Source IC/Form1.cs im inventarisierten Intake, Literalrevision 20261013: Ablage 120–121/204–237; Kundenreader 491–1227; Listenhelfer 1652–1699; JSON-Blattdump 8125–8141. Herstellerhandbuch ImageConvert-4, 09.10.2026, physische Seiten 13–21/73. Kein Abgleich mit einer installierten EXE; Konflikte werden ausdrücklich nicht durch Beispielkorrektur verborgen.