Bild proportional in Rahmen einfügen

Moinsen

Ich versuche gerade diesen etwas älteren Beitrag für mich umzusetzen:
Bild proportional einfügen - Combit Forum

Dabei habe ich eine etwas andere Ausgangslage wie der Kollege im Beitrag. Die Bilder in unserer Datenbank können sowohl Hoch- wie auch Querformat oder nahezu Quadratisch sein.

Ich möchte nun auf einer A4-Seite die Bilder einmal oben links (beim ersten “Etikett”) und einmal unten rechts einfügen. Dabei sollen die Bilder auch zentriert “gezoomt” werden wie in dem Beitrag.

Nur kriege ich dies nicht hin, dass er mir das auch macht. Ich kämpfe mit Bildern die dann zum Teil nicht gezoomt sind wenn sie als Hochkant vorliegen oder verschoben sind.

Folgend die Konfiguration für die Bildgrössenberechnung.

Position “Bild Oben”

Links

(LL.Device.Page.Size.cx-
Cond(UnitFromSCM(DrawingWidthSCM(Foto)) / UnitFromSCM(DrawingHeightSCM(Foto)) > 1,
  UnitFromSCM(DrawingWidthSCM(Foto)) / UnitFromSCM(DrawingHeightSCM(Foto)),
  UnitFromSCM(DrawingHeightSCM(Foto)) / UnitFromSCM(DrawingWidthSCM(Foto)))
*LL.Device.Page.Size.cy)/4

Oben

0

Breite

Cond(
UnitFromSCM(DrawingWidthSCM(Foto)) / UnitFromSCM(DrawingHeightSCM(Foto)) > 1,
  UnitFromSCM(DrawingWidthSCM(Foto)) / UnitFromSCM(DrawingHeightSCM(Foto)),
  UnitFromSCM(DrawingHeightSCM(Foto)) / UnitFromSCM(DrawingWidthSCM(Foto))
)
*
LL.Device.Page.Size.cx/2

Höhe

LL.Device.Page.Size.cx/2

Beim Bild unten habe ich einfach bei Links noch 105 vorangestellt, damit das Bild um 105mm weiter nach rechts geschoben wird.

Falls es hilft: die Ausdrucke werden immer auf A4 Papier erfolgen. Sprich die “Bilderrahmen” werden immer 148.5 x 105mm (HxB) sein.

Hier ein Screenshot wie es aussehen sollte:

und hier was er daraus macht wenn die Bilder “Hochkant” vorliegen

Zur Info: Die Bilder bei diesen vier Seiten haben folgende Auflösungen
Alpenglühen: 1456 x 1449px
Apfelblüte: 2048x1365px
Rugosa Foxi: 2912x4368px
Schneeflocke: 1109x1106px

Ich hoffe ich habe möglichst alle Infos gegeben, die man braucht. Ich steh irgendwo aufm Schlauch.

Schöne Festtage euch allen und danke fürs Helfen

Cheers

Dominik

Knifflig :slight_smile: - ich hab da eben mal rumexperimentiert. Im Prinzip ist das eine klassische Viewport / Seitenverhältnis-Rechnung. Ich komme für die Positionen auf diese Formeln (Herleitung ist eine längere Kritzelei auf meinem Block):

Links:

UnitFromSCM( (LL.Device.Page.Size.cx*1000/2 - Max(LL.Device.Page.Size.cx*1000/2, (LL.Device.Page.Size.cy*1000/2) * (DrawingWidthSCM(@Foto)/DrawingHeightSCM(@Foto)))) / 2 )

Oben:

UnitFromSCM( (LL.Device.Page.Size.cy*1000/2 - Max(LL.Device.Page.Size.cy*1000/2, (LL.Device.Page.Size.cx*1000/2) / (DrawingWidthSCM(@Foto)/DrawingHeightSCM(@Foto)))) / 2 )

Breite:

UnitFromSCM( Max(LL.Device.Page.Size.cx*1000/2, (LL.Device.Page.Size.cy*1000/2) * (DrawingWidthSCM(@Foto)/DrawingHeightSCM(@Foto))) )

Höhe:

UnitFromSCM( Max(LL.Device.Page.Size.cy*1000/2, (LL.Device.Page.Size.cx*1000/2) / (DrawingWidthSCM(@Foto)/DrawingHeightSCM(@Foto))) )

Das ist das Bild “oben links”, für “unten rechts” muss dann noch jeweils die Hälfte der Breite und Höhe der Seite zu Links und Oben addiert werden. Außerdem muß das Bild künstlich gecropped werden, da es sich so im Zweifel über sein “viertel” rausmalt - klar, wir zoomen das ja zentriert. Das Cropping kannst du mit einem Rechteck erreichen, das weiß gefüllt ist und das jeweils mit dem Text bedeckte viertel zusätzlich überdeckt.

Ich hänge dir mal mein Spielprojekt für die Demo-Anwendung an. Das Bild kann über die Benutzervariable @Foto geändert werden. Ich hab die Formel mit verschiedenen Aspect-Rations getestet, das sah soweit gut aus. Wichtig: ich gehe hier jetzt von der Unit “mm” aus, da LL.Device.Page.Size einheitenspezifisch ist. Daher der Faktor *1000 in den Formeln, SCM sind ja 1/1000 mm. Wenn du das Projekt auch auf Systemen mit imperial Units laufen lassen wolltest wird es noch ein wenig komplexer…

Zoom.brf (7.8 KB)

Hey Jochen!

Vielen herzlichen Dank für die Annahme der Denksportaufgabe so kurz vor den Feiertagen. :sweat_smile:

Das funktioniert perfekt so!

Das Ganze wird nur für mm-Regionen gebraucht, daher kein Umweg für die anderen Masseinheiten nötig.

ich wünsch dir erholsame Festtage und einen guten Rutsch ins neue Jahr.

Cheers

Dominik

1 Like