Bild drehen (Ereignisaktion)

Ereignisaktion - Kurzfassung

Zweck: Erzeugt ausgehend von einem Originalbild ein um Vielfache von 90° im oder gegen den Uhrzeigersinn rotiertes Zielbild in demselben Dateiformat.


HINWEISDiese Ereignisaktion ist nur verfügbar, wenn das funktionale Erweiterungsmodul "Dokumentenmanagement" installiert und lizenziert ist.


Siehe auch: Bild drehen (in Formularen)

Die Ereignisaktion Bild drehen (Ereignisaktion) erzeugt ausgehend von einem Originalbild ein um Vielfache von 90° im oder gegen den Uhrzeigersinn rotiertes Zielbild in demselben Dateiformat.

Unterstützt werden dabei ausschließlich die Dateiformate JPEG, PNG, BMP und GIF.

HINWEIS◄ Abhängig vom Grafikformat werden ggf. komprimiert vorliegende Bilddaten für die Drehung entpackt und danach erneut komprimiert. Da die Komprimierung für die Zieldaten nicht mit der Komprimierung der Originaldaten übereinstimmen muss, kann sich die Datenmenge des Bilds verändern. Selbst bei einer Drehung um 0° oder 360° kann dadurch die Bildinformation vom Original abweichen.

Konfiguration

Der Parameter Winkel erwartet negative oder positiver Ganzzahlen, die gerundet auf Vielfache von 90 den anzuwendenden Drehwinkel angeben:

  • Positive Werte (>45°) definieren dabei eine Drehung im Uhrzeigersinn.

  • Negative Werte (<-45°) definieren eine Drehung gegen den Uhrzeigersinn.

  • Ein Drehwinkel von -90° ist beispielsweise gleichbedeutend mit einem von 270°.

Der Parameter Eingabe-Bild muss das Originalbild über einen Wertauflöser bereitstellen, dessen Rückgabewert dem Typ "Aktionsereignis-Inhalt" oder "Byte-Array" entspricht.

Der Parameter Ergebnis-Bild definiert wohin das Zielbild gespeichert werden soll. Der Wertauflöser muss hier einen geeigneten "Empfänger" (z. B. eine Variable oder ein Objekt-Feld) für ein "Byte-Array" oder den Typ "Aktionsereignis-Inhalt" definieren.


images/download/attachments/177907546/image-2024-8-8_11-49-45-version-1-modificationdate-1723110585007-api-v2.png

HINWEIS◄ Häufig liegt das Originalbild als hochgeladene Datei vor und das Zielbild soll ebenfalls als neue Datei abgelegt werden bzw. die Originaldatei überschreiben. Dann kann für die Wertauflöser Eingabe-Bild und Ergebnis-Bild jeweils ein Dateireferenz-Wertauflöser verwendet werden, der Lese- und Schreiboperationen im serverseitigen Dateisystem ermöglicht.

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg ACHTUNGimages/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg Sofern für den Parameter Ergebnis-Bild ein Dateireferenz-Wertauflöser verwendet wird, bedingt dies einen Schreibzugriff im Dateisystem, durch den bestehende Dateien ohne Rückfrage überschrieben oder gelöscht werden können.
Dies ist besonders kritisch, da entsprechende Schreibzugriffe auf dem Dateisystem auch im Testmodus uneingeschränkt ausgeführt werden.

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg ACHTUNGimages/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg Sofern der Rückgabewert des Parameters Eingabe-Bild Inhalt in einen ungeeigneten Dateiformat bereitgestellt wird, wird als Zielbild "Kein Wert" (null) ausgegeben.
In Verbindung mit einem Dateireferenz-Wertauflöser für den Parameter Ergebnis-Bild wird dann die referenzierte Datei gelöscht!
Im Un terschied dazu bleibt eine Zuweisung von null z. B. an das Feld documentContent eines Dokuments (s. Dokumente) einfach wirkungslos.

Beispiel

Mit der Funktion Profilbild ändern können Benutzer ein persönliches "Profilbild", den sogenannten "Avatar", für den Kontext von Lobster Data Platform / Orchestration definieren, das direkt nach dem Hochladen bzgl. Zoom-Stufe und Drehung ein wenig editiert werden kann.

Nachträgliche Änderungen für ein bereits hochgeladenes Profilbild sind dagegen per Standard nicht vorgesehen. Zur Demonstration der Ereignisaktion Bild drehen (Ereignisaktion) soll eine Funktion zum Drehen des bereits hochgeladenen Profilbilds für ein bestehendes Benutzerkonto eingerichtet werden. Zu diesem Zweck soll das Ribbon in der Übersicht für Benutzer zwei Buttons anbieten, die in Verbindung mit einer Einfachauswahl für ein Benutzerkonto das betreffende Profilbild um 90° nach links oder rechts verdrehen.

Laufzeitbeispiel:

images/download/attachments/177907546/image2021-5-18_17-5-40-version-1-modificationdate-1723110202251-api-v2.png

  • Diese beiden Buttons sollen das Drehen des "Avatars" nach links oder rechts ermöglichen, wenn ein bestimmter Benutzer ausgewählt ist.

Konfiguration:

Für jeden der beiden Menübefehle wird ein Eigenes Aktionsevent eingerichtet, das über den jeweiligen Button ausgelöst werden soll (s. Ribbon-Makros bzw. Verfügbare Befehle / "Eigenes Aktionsevent").

Eine gemeinsame Ereignisbehandlung für die beiden Auslösenden Ereignisse "Drehung LINKS" (ROTATE_LEFT) und "Drehung RECHTS" (ROTATE_RIGHT) wird angelegt und wie rechts abgebildet konfiguriert:

  • Die Prüfende Regel stellt per Typprüfung sicher, dass als Eingabeobjekt im Datenkontext der Ereignisbehandlung ein "Benutzer"-Konto anliegt.

    ANMERKUNG◄ Hier könnte zusätzlich das Feld avatarURL mit einer Objekt-Feld-Regel auf "nicht leer" geprüft werden, um abzusichern, dass für diesen Benutzer überhaupt ein Profilbild hochgeladen wurde.


Die Aktionen bei bestandener Regel werden hier zunächst im Überblick vorgestellt. Details je Aktion folgen unterhalb:

  • Eine Setze Wert-Ereignisaktion definiert den Dateipfad, unter dem das Profilbild des Benutzers zu finden ist, als Wert der Variablen avatarFilePath.

  • Innerhalb einer Wenn Dann Sonst-Ereignisaktion wird der Variablen rotation der gewünschte Drehwinkel (-90° für Linksdrehung, 90° für Rechtsdrehung) zugewiesen.

  • Abschließend folgt die Ereignisaktion Bild drehen (Ereignisaktion):

    • Der Wert für den Parameter Winkel wird direkt aus der Variablen rotation übernommen.

    • Für die Parameter Eingabe-Bild und Ergebnis-Bild wird jeweils der Textwert aus der Variablen avatarFilePath in einem Dateireferenz-Wertauflöser als Dateipfad eingesetzt. Der Lesezugriff für das Eingabe-Bild und der Schreibzugriff für das Ergebnis-Bild betreffen hier ausnahmsweise dieselbe Datei. Diese wird demnach überschrieben, wenn eine Drehung ausgeführt wird.

ANMERKUNG◄ Per Standard erscheint das Profilbild nicht sichtbar in den Details für das ausgewählte Benutzerkonto. Das gedrehte Bild erscheint erst bei der nächsten Anmeldung des betreffenden Benutzers. Auch falls das Profilbild des angemeldeten Benutzers gedreht wird, erscheint es in den bestehenden Sitzung nicht sofort links oben im Benutzerbereich der Menüleiste.

HINWEIS◄ Durch die Drehung wird die im Benutzerkonto referenzierte Datei überschrieben. An der Referenz im Benutzerkonto ändert sich nichts. Insofern wird die Änderung wirksam, ohne dass das Benutzerkonto gespeichert werden muss.

images/download/attachments/177907546/image-2024-8-12_9-17-58-version-1-modificationdate-1723447078028-api-v2.png images/download/attachments/177907546/image-2024-8-12_9-19-2-version-1-modificationdate-1723447142373-api-v2.png

Konfigurationsdetails:

Die erste Setze Wert-Ereignisaktion weist der Variablen avatarFilePath den Dateipfad zum Profilbild des als Eingabeobjekt anliegenden Benutzers zu:

  • Im Objekt-Feld avatarURL ist eine URL eingetragen, die auf das Profilbild des Benutzers verweist, sofern aktuell eines hochgeladen wurde. Da anstelle der URL ein relativer Dateipfad für das Dateisystem des Servers benötigt wird, wird die URL in zwei Schritten durch verkettete Text ersetzen-Wertauflöser aufbereitet.

    • Zunächst wird das Präfix img:// durch den relativen Pfad zum öffentlichen Verzeichnis des Servers ersetzt (in einer Standardinstallation ./upload/web/).

    • Danach wird der mit einem Fragezeichen eingeleitete Parameter-Teil der URL entfernt, was die Option Regulärer Ausdruck? elegant ermöglicht.

Laufzeitbeispiel:

avatarURL="img://avatar/user_avatar_101.png?c=1619013361517"

... ergibt (sinngemäß) ...

avatarFilePath="./upload/web/avatar/user_avatar_101.png"

images/download/attachments/177907546/image-2024-8-12_9-35-37-version-1-modificationdate-1723448137130-api-v2.png

Die folgende Fallunterscheidung per Wenn Dann Sonst-Ereignisaktion soll abhängig von dem zur Laufzeit gedrückten Ribbon-Button den Drehwinkel für eine Links- oder Rechtsdrehung definieren.

  • Innerhalb einer Objekt-Feld-Regel wird dazu Rückgabewert des Wertauflösers Auslösendes Ereignis mit dem Wert der dynamischen Auszählung Eigenes Aktionsevent (s. Statische Werte, "Jede dynamische Aufzählung") verglichen, der das Ereignis "Drehung LINKS" definiert.

  • WENN als Auslösendes Ereignis "Drehung LINKS" festgestellt wird, dann wird der Variable rotation der Wert -90 zugewiesen.

  • SONST wird angenommen, dass als Auslösendes Ereignis die "Drehung RECHTS" vorliegt, da keine weiteren Auslösendes Ereignisse für die Ereignisbehandlung definiert sind. Dann wird ohne explizite Prüfung (im Bild nicht aufgeklappt) der Variablen rotation der Wert 90 für die Rechtsdrehung zugewiesen.

images/download/attachments/177907546/image-2024-8-12_9-39-5-version-1-modificationdate-1723448345266-api-v2.png