Ausschnitt eines Bildes anzeigen
V3xX
- php
0 ChrisB0 V3xX2 Felix Riesterer0 Detlef G.0 V3xX0 Felix Riesterer0 V3xX
1 bleicher
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
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
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
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.
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
Hallo zusammen,
Konnte das Problem lösen, besten Dank für die Hilfe euch allen!
freundliche Grüsse
V3xX
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.
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);
}
}
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