Als allerletztes möchte ich noch die Berechnung in meiner ImagesController.php ändern.
Wie schon erwähnt werden Bilder aus einem Ordner ausgelesen und deren Größe bestimmt.
Ich möchte es nun so machen das in meinem CSS folgendes steht:
img { display: block; width: auto; height: auto; margin: 0 auto; border: 1px dotted orange; }
in meinem Template steht dann folgendes:
<figure>
<h3>{headline}</h3>
<h4>{subtitel}</h4>
<img src="{img.path}" width="880" height="880" alt="{headline}" style="max-width:{img.width}vw; max-height:{img.height}vw;">
<figcaption>{subtext}</figcaption>
</figure>
Dort werden also meine errechneten Werte in mein max-width und max-height eingefügt.
Das gesamte ImagesController.php ist in meinem Ausgangs-thread zu sehen.
Hier nun mein Angebot zur Änderung der private function CalculateSizes( $size )
private function CalculateSizes( $size ) : array {
$size_calc = [ 'width' => $this->WidthCalculateValue, 'height' => $this->HeightCalculateValue ];
switch ( $size[0] <=> $size[1] ) {
case 1 :
$size_calc['height'] = round( $this->HeightCalculateValue * $size[1] / $size[0] ,5 );
break;
case -1 :
$size_calc['width'] = round( $this->WidthCalculateValue * $size[0] / $size[1] ,5 );
break;
default :
break;
}
return $size_calc;
}
private function Initialize() {
$this->IsValid = $this->CheckDir();
$this->AllowedImageTypes = 'jpg,gif,png';
$this->WidthCalculateValue = 100;
$this->HeightCalculateValue = 90.8131;
$this->Images = null; }
Kann man das so machen, wäre das richtig?
Height bekommt ein bestimmten Wert in vh (eine FESTE HÖHE), sagen wir mal 90.8131vh, das width ist ein Prozentwert je nach dem:
Case 1; Das Bild ist Quadratisch also height hat die volle HÖHE 90.8131vh und width hat die volle Breite also 100%
Case 2 : Das Bild ist horizontal Rechteckig also hat das width die volle Breite , also 100%
UND nun muss per Dreisatz mein neues vh ( also die HÖHE) ausgerechnet werden
height in px * 90.8131 / width in px
also folglich bei einem Bild wo die px Werte per IMGsize herausgefunden wurden :
width: 880px und height: 620px
620 * 90.8131 / 880 ergibt 63,98195 (hier auf 5 Stellen Runden) das wäre mein neuer vh Wert
Case 3: Das Bild ist vertikal Rechteckig also hat mein vh die volle HÖHE also 90.8131vh
und nun muss meine neue Breite festgestellt werden, also hat das Rechteck nicht mehr die vollen 100%
sondern ==> width in px * 100% / height in px also ==> 620 * 100 / 880 ergibt ca 70.454545 meine neue Breite in %
Das möchte ich so errechnen.
Gruß der einsiedelnde