Korrektur eines PHP Scriptes

Hallo, ich bräuchte nochmal für ein anderes Projekt / eine andere Überlegung, eure Hilfe.

Es geht mir darum, Fotos nicht scalieren zu lassen, sie sollen einfach immer eine ganz bestimmt Grösse behalten,
(im Fall wenn man zum Beispiel STRG++ anwendet)
Ein Beispiel habe ich hier: LINK zur DEMO
Ich verwende einfach die Einheit vw === siehe [Quelltext](http://view-source:misanthrop.bplaced.net/test/bildvergroesserung_unterbinden_1.html) das ich als “BOX” dem img zuweise!

Die Bild - Medien werden anhand eines Php - Scriptes aus den entsprechenden Ordnern ausgelesen und ebenso mit Php angezeigt: siehe Code: Versuch meines Codes

Es sollen sowohl horizontale rechteckige Bilder, vertikale rechteckige Bilder als auch quadratische Bilder in
dieser Form angezeigt werden!

Liege ich mit meiner Überlegung richtig???

Ist das PHP auch korrekt? Mit der Bitte um Korrektur!!!

Gruss T.

Hi einsiedlerX,

die aller einfachste, aber nicht sehr schöne Variante, wäre das Zoom Kommando zu deaktivieren.
Beispiel: http://jsfiddle.net/VijayDhanvai/4m3z3knd/

Hier ist aber zu beachten, das Javascript nur dann funktioniert, wenn dies im Browser aktiviert ist.
Das was du vorhast hat das andere Problem, das dies nicht sehr schön für unterschiedliche Bildschirmgrößen ist (besonders bei großen Bildschirmen). z.B. wenn die Bilder kleiner sind, als der Bildschirm, da hier das Bild extrem in die Länge / Breite gezogen wird.
Ansonsten benutzt du (nach meiner Meinung) die andere Lösung (CSS height: vw/hw) bereits, solange der jeweilige Browser die CSS-Commandos verststeht.

Dein PHP Code:
if( $width = 750)
ist immer TRUE, da hier die Variable $width den Wert 750 erhält. Wenn du eine Abfrage starten willst, müssen hier “==” (2x"=") stehen. Dies bezieht sich auf alle IF Abfragen in deinem Script.
Desweiteren muss, damit das Script funktioniert, eine Seite des Bildes immer 750px haben, ansonsten wird keine “$default_width/height” definiert.

Desweiteren sollte die Klammer der If Abfrage geschlossen werden
"if($width =[color=#990000]–>=<–[/color] 750 && $height<750[color=#990000]---->)<----[/color] {"
"if($width == 750 && $height<750) {"

Deine If Abfragen sollten ca so aussehen, damit es bei jeder Bildgröße klappt:

//Bild-Orientierung erhalten // if($width==$height){ //Bild ist ein Quadrat }elseif($width>$height){ //Bild ist horizontal - }else{ //Bild ist Vertikal | }

PS: Warum nutzt du nicht die Browser Ausgabe "http://misanthrop.bplaced.net/mediaordner/media-01/arbeit11/11-05.jpg"
oder ein Plugin wie z.B.: http://fancybox.net/

Hi icatch, danke für deine erste Antwort,
ich möchte keine fremden Programme benutzen, ich denke wenn ich das img wie in meinem einfachen Beispiel:
einfaches Beispiel ohne schnickschnack
behandle dann geht das schon.
Wichtiger Teil im < style >

body {padding:0; margin:0; background:#eee;} img {display:block; width:49.05vh; height:87.2vh; max-width:100vw; max-height:calc(100vw * 87.2 / 49.05); position:absolute; top:0; right:0; bottom:0; left:0; margin:auto; border: 1px dotted red;} @viewport {width:extend-to-zoom; zoom:1.0;}


Da verzerrt sich bisher noch nichts, denn durch einfachen Dreisatz wird die Fehlende < max-height > ermittelt und
sie ist meiner Meinung nach proportional immer richtig! Oder liege ich da falsch?

So, nun möchte ich das Ganze mit Variablen in meinem Script anwenden:
Wenn ich das jetzt richtig verstanden habe dann sieht die if-abfragen nun so aus:

[ … ]

ich denke aber, der Teil in < echo > , dort wo dem < img > auch ein < style > gegeben wird , der ist nicht korrekt:

[ … ]

Bitte dort auch mal eine Korrektur!

Dies hier ist dieselbe “Berechnung” wie oben

und voila… das foto scaliert sich nicht mehr “auf”!
Ein Gedankenfehler meinerseits???

Gruss T.

Hi einsiedlerX,

generell ist das kein Thema, so wie du es geschrieben hast.

Das was ich mit Verzerrung meine ist, das dass Bild die Maße 422px x 750px hat. Durch dein Script wird das Bild auf einem 27` Monitor auf ca. 481px * 855px gestreckt.

Wenn du jetzt einen größeren Bildschirm hast oder eine größere Anzeige im Explorer (z.B. keine Menüleiste, Taskleiste wurde ausgeblendet, …) wird das Bild noch mehr in die Breite/Höhe gezogen.
Das kommt daher, das dass Bild ein Festesmaß hat. Die Ausgabe vom Explorer auch, z.B. Höhe 980px, durch dein Script wird das 750px hohe Bild auf 83,1% der Bildschirmgröße gezogen / gestaucht. Somit erhält das Bild in diesem Beispiel die Höhe 814,38px, es wird in die Höhe gestreckt und verpixelt leicht. Ein größeres Bild zu stauchen hätte nicht so schnell einen sichtbaren Pixel-Effekt.
Zum Testen, schaue dir das über einen größeren Monitor (über 800px Höhe [Ausgabe]), mit Firefox an und mache dort auf das Bild einen rechtsklickt -> Grafik Infos, siehe Bild oben. Während dem Zoomen skaliert das Bild nicht, es Skalliert sich nur auf z.B. 83,1% der Bildschirmhöhe.

Die If Abfragen sind richtig, welche du hier gepostet hast.

Die direkte echo Ausgabe ist eigentlich Fehlerfrei, hier kommt es darauf an, ob du bereits die Variabeln wie z.B. „$values[‚file‘][‚width‘]“ weiter oben deffiniert hast, wenn ja, dann passt das „echo“.

Das einzige, wo ich bedenken habe ist, ob man im Element-Style-Attribut ein „@viewport“ setzen darf.
Setzte es als inline Style Element, in den < HEAD> Tag, so wie es aktuell auf der Seite zu sehen ist.

Hi icatch,
ich erahne was Du meinst.
Zunächst einmal, entstand wohl auch Verwirrung weil die Ausgabe des Bildes auf dem Bildschirm
850 * 480px ist. Das rührt daher, weil ich die vw und vh - Werte annähernd an dieses Format angepasst hatte, weil ich erst 850 * 480px grosse jpgs verwenden wollte. Jetzt aber lieber jpgs mit 750px maximalhöhe/breite verwenden will und nicht mehr an die vw und vh - Werte gedacht hab.

Nun hab ich es angepasst: Siehe: Testseite

Ich weiss, das die vw und vh - Werte nur annähernd / ungefähr sein können, ich denke einen exakten Wert kann man nicht ermitteln. Wenn ich musse hab, dann werde ich nochmal die Stellen hinter dem Komma erweitern um noch ein wenig genauer zu werden.
Jetzt sind (annähernd) 77.24vh ungefähr 750px und 43,461vw ungefähr 422px

(Klar, wenn ich damit weiter “rechnen” will muss das wohl annähernd stimmen!)

Doch haben nicht alle Bilder dieses Format, sie können auch unterschiedlich breit/hoch sein.
Aber das will ich wiederum mit Dreisatz berechnen, da ich ja weiss 77.24vh sind ungefähr 750px
und ich hab ja die “ausgelesenen” Werte des jpg`s $width und $height.
Diese Berechnung kann ja im if - Teil stehen.

Das wovon Du schriebst, werde ich mir noch genauer angucken!

Achso, klar… wenn man die Menüleiste zum Beispiel ausblendet dann wird das Bild proportional
zur Bildschirmgrösse angepasst und ist dann nicht mehr 750px hoch.
Das ist mir aber nicht so wichtig!

Ersteinmal…

Grüsse T.

Ich versuche immer noch ein IMG mittels vw und vh Werte so “einzuzwängen” das es nicht grösser-skaliert (egal ist mir dabei wenn die Menüleiste “ausgeblendet” wird, das das IMG dabei grösser dargestellt wird!
Ich möchte halt nur nicht das das IMG beim “vergrössern” so gross angezeigt wird, das man scrollen müsste!

Der folgende PHP-Code sollte (wenn er richtig ist!) das jeweilige Seitenverhältnis anpassen.
Dabei wird jede Bildergalerie aus Ordnern ausgelesen (auch die ermittelten jeweilgen getImageSize Werte des IMG)

Dabei sind :
width = 39.063312vw ungefähr / annähernd 750px (Breite)
height = 77.241564vh ungefähr / annähernd 750px (Höhe)

(Jedenfalls bei meinem Bildschirm (1920 * 1080)) / weiss nicht ob das so stimmt!!!.

Jedenfalls sieht meine Berechnung so aus:

IMG Link zur Berechnung

Liege ich damit ungefähr richtig???
Oder habe ich irgendwo einen Denkfehler?

Mir ist es wichtig das Seitenverhältnis des IMG beizubehalten / den unbekannten Wert der “Seite” zu berechnen im Verhältniss

Grüsse T.

Ich verstehe zwar nicht was genau du erreichen willst, aber beim dritten If verwendest du den Zuweisungsoperator. Das wird dir vermutlich unerwartete Ergebnisse bringen.

Mfg :wink:

Hallo Mgier,
dann zeig mir doch bitte wie es richtig geht!
Screen von der Berechnung

Gruss T.

Jetzt stimmt es, offenbar hast du jetzt ein anderes Bild eingestellt :wink: