Wie zentriert man Mathematik ein Bild mit verschiedenen Bildgrößen immer Zentral mittig und Skaliert es auf x und y Bildschirmformat ohne dass es verzerrt?

1 Antwort

Jedes Bild sei rechteckig und habe eine Breite und eine Höhe.

Wir definieren: Das Zentrum eines Bildes ist der Punkt, der jeweils genau in der Hälfte der Breite und der Hälfte der Höhe liegt, wenn man sich ausgehend von einer beliebigen Ecke in Richtung Bildmitte bewegt.

Man nehme nun das Bild und platziert es in einem Koordinatensystem so, dass das Zentrum immer im Ursprung (0,0) liegt.

Nun vereinbaren wir eine Umgebung um den Ursprung, in der alle Bilder vollständig liegen müssen. Nehmen wir dazu einfach mal [-1/2, 1/2] auf beiden Achsen, also ein Quadrat um den Ursprung mit der Seitenlänge 1.

Um die Bilder in diese Umgebung einzupassen, muss die Höhe und die Breite eines jeden Bildes mit dem Kehrwert der längeren Seitenlänge multipliziert (skaliert) werden.

Bsp: Ein Bild mit der Breite=4 und der Höhe=3. Die längere Seitenlänge ist die Breite. Also sind die neuen Abmessungen (Breite, Höhe):




Lebensoffen 
Beitragsersteller
 17.08.2024, 15:34

Bildschirm hat leider kein Koordinatensystem.es gibt nur höhe und breite und Auflösung

0
smiregal8472  17.08.2024, 15:47
@Lebensoffen

Natürlich hat der Bildschirm ein Koordinatensystem. Sonst könnte er unmöglich etwas bestimmtes anzeigen, da es keine Möglichkeit gäbe, ihm zu sagen, wo er welche Farbe zeigen soll...

2
KarlRanseierIII  17.08.2024, 19:45
@Lebensoffen

Natürlich hat er das, der Ursprung liegt in der oberen linken Ecke, die positive x-Achse geht nach rechts, die positive y-Achse nach unten..

Nichts, was mit einer Translation nicht zu handhaben wäre.

Sei es drum, ich beschreibe das freundlicherweise mal algorithmisch, es sei s=screen, p=picture, w=width, h=height, f=Skalierungsfaktor.

f=min(sw/pw,sh/ph) #determine factor
pic.scale(f)       #scale
x,y=(sw-pw)//2,(sh-pg)//2 # det. upper left corner
pic.place(x,y)     #place

Bei abweichendem Koordinatensystem oder wenn die gesamte Bounding Box benötigt wird, kann man das nach Bedarf anpassen - es dient nur zur Anschauung

Es sei noch zu erwähnen, daß die Skalierung bei abweichender Außmaßen Whitespace produziert.

3