V3xX: Ausschnitt eines Bildes anzeigen

Guten Tag,

zu meinem Problem:
Ich möchte gerne 4 gleich grosse (gleich hoch & gleich breit) Bilder nebeneinander anzeigen lassen.
Dies sind nicht immer die 4 gleichen, sollen also per Random aus über 2000 Bilder ausgewählt werden.
So weit so gut, aber ich will die Bilder nicht verzerren sondern nur einen Ausschnitt aus einem Bild nehmen.

Ich habe bereits etwas gefunden, da wird aber jeweils eine neue Datei angelegt. Dies will ich aber nicht, es soll das Bild einfach nur anzeigen.

Hat jemand einen Lösungsansatz?

Besten Dank und freundliche Grüsse
V3xX

  1. Hi,

    So weit so gut, aber ich will die Bilder nicht verzerren sondern nur einen Ausschnitt aus einem Bild nehmen.

    Ja dann nimm doch ...

    Ich habe bereits etwas gefunden,

    Ach.
    Und was?

    da wird aber jeweils eine neue Datei angelegt. Dies will ich aber nicht, es soll das Bild einfach nur anzeigen.

    Das Beispiel zur verlinkten Funktion enthält bereits eine direkte Ausgabe des Bildes, ohne Speicherung auf Platte.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Hallo,

      Ja dann nimm doch ...

      Besten Dank, werde ich gleich mal versuchen.

      Ach.
      Und was?

      imagecopyresized

      Das Beispiel zur verlinkten Funktion enthält bereits eine direkte Ausgabe des Bildes, ohne Speicherung auf Platte.

      eigentlich genau das, was ich suche =)

      Danke für deine Bemühungen, Gruss
      V3xX

      1. Liebe(r) V3xX,

        eine direkte Ausgabe des Bildes, ohne Speicherung auf Platte.
        eigentlich genau das, was ich suche =)

        warum definierst Du keine <span>-Elemente in den gewünschten fixen Maßen, in denen Du die fraglichen Bilder als Hintergrundbild definierst, welches horizontal und vertikal zentriert angezeigt wird? Damit sparst Du Dir die rechenintensiven PHP-Funktionen gänzlich und entlastest Deinen Server merklich.

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
        1. Hallo Felix

          warum definierst Du keine <span>-Elemente in den gewünschten fixen Maßen, in denen Du die fraglichen Bilder als Hintergrundbild definierst, welches horizontal und vertikal zentriert angezeigt wird? Damit sparst Du Dir die rechenintensiven PHP-Funktionen gänzlich und entlastest Deinen Server merklich.

          Dafür muss jedes mal das komplette Bild zum Client übertragen werden.

          Ich denke, für die Entscheidung ob die PHP- oder die CSS-Lösung verwendet wird, sollte auch berücksichtigt werden, wie groß die großen Bilder und wie klein die Ausschnitte sind, und ob die großen Bilder häufig sowieso auch noch komplett angezeigt werden sollen.

          Auf Wiederlesen
          Detlef

          --
          - Wissen ist gut
          - Können ist besser
          - aber das Beste und Interessanteste ist der Weg dahin!
          1. Hallo zusammen,

            Konnte das Problem lösen, besten Dank für die Hilfe euch allen!

            freundliche Grüsse
            V3xX

            1. Liebe(r) V3xX,

              Konnte das Problem lösen, besten Dank für die Hilfe euch allen!

              und warum verrätst Du nicht, wie?

              freundliche Grüsse

              So freundlich finde ich das nicht, dass Du den freiwilligen Helfern verschweigst, ob sich ihre Zeit und Mühe gelohnt hat, oder ob Du sämtliche Tipps einfach in den Mülleimer geworfen und etwas völlig anderes gemacht hast.

              Liebe Grüße,

              Felix Riesterer.

              --
              ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
              1. Hallo Felix,

                Sorry, natürlich verrate ich wie.

                Ich habe zuerst die Sache mit dem span versucht, dies hat dann aber nicht so funktioniert wie ich das wollte, da die Ausschnitte sehr klein sind und die Bilder ca die Hälfte eines 19" Monitors bedecken.

                Die anderen Sachen mit den Thumbnails habe ich irgendwie nicht auf die Reihe gebracht, also habe ich das Problem folgendermassen gelöst:

                Die Maximale Breite, die die Bilder einnehmen dürfen ist 641px.
                Also habe ich eine Funktion erstellt, die immer ein Random-Bild aus der gallery auswählt und anschliessend überprüft ob von den 641px noch Platz ist.
                Wenn ja, wird die Breite wiederum dazugezählt und es wird das nächste Bild ausgesucht.
                Hat ein Bild nicht mehr genug Platz, endet die Funktion.

                Hier die Funktion:

                  
                function getPic($anz){  
                        //Globale Variablen  
                	global $pics;          //schlussendlich die Bilder welche klein dargestellt werden  
                	global $all_files;     //alle Bilder im Array  
                	global $actualpix;     //Die bereits eingenommene Breite  
                	$ran = rand(0, $anz);  //Zahl ziehen  
                	$maxpix = 641;  
                	  
                	if (count($pics) != 0){  
                		if (in_array($ran, $pics)){  
                			getPic($anz);  //Damit gleiches Bild nicht zweimal kommt  
                		} else {  
                			$tmp = getimagesize($main.$all_files[$ran]);  
                			$h = 100/$tmp[1]*130; //Höhe in Prozent ausrechnen (neue Höhe 130px)  
                			if ($actualpix + $tmp[0]/100*$h+5 <= $maxpix){  
                				$pics[] = $ran;  
                				$actualpix += $tmp[0]/100*$h+5; //Fünf wegen padding dazurechnen  
                				getPic($anz);  
                			}  
                		}  
                	} else {  
                		$tmp = getimagesize($main.$all_files[$ran]);  
                		$h = 100/$tmp[1]*130;  
                		$actualpix = $tmp[0]/100*$h+5;  
                		$pics[] = $ran;  
                		getPic($anz);  
                	}  
                }
                
  2. Grüße,
    genau genommen hätte es auch passives style-formatierung in den meisten fällen getan.. oder spricht was gegen? willst du nur sehr kleine bereiche sehr großer bilder anzeigen?
    MFG
    bleicher

    --
    __________________________-

    FirefoxMyth