kleinerChemiker
Here to stay
|
Dachte das wäre der Funktionsaufruf *g*
$image_name = "image.php?image_name=$image_name&style=$style";
Wie macht mans richtig? damit weist du nur einer variablen einen wert zu. eine funktion rufst du etwa so auf: function_name ('wert1','wert2'); wenn du die bilder nicht anzeigen willst, sondern nur erschaffen, dann kannst du das in einem file machen, am besten in einer schleife. nur wenn du das bild anzeigen willst mittels php, dann kannst du als einzigen output das bild ausgeben.
|
jives
And the science gets done
|
wenn du die bilder nicht anzeigen willst, sondern nur erschaffen, dann kannst du das in einem file machen, am besten in einer schleife. nur wenn du das bild anzeigen willst mittels php, dann kannst du als einzigen output das bild ausgeben. Genau. Ich dachte du möchtest mit dem Script die Bilder auch gleich anzeigen, weil da eben schon Sachen wie der Header u.ä. drin waren. Den brauchst du dann nicht mitschicken, wenn du die Bilder jetzt nur mal ablegen möchtest. Lösche ich dann den Part von Hader bis zum fileCount++ aus der Funktion, erstellt er mir keine Bilder mehr. if($style=="show" || $style=="thumb") {
if(!file_exists($dest_file))
imagejpeg($image_small, $dest_file, 100);
}
Diesen Teil darfst du dann nicht löschen, weil hier das File angelegt wird. Wenn das Script aber jetzt nur Thumbs erstellen und nicht anzeigen soll, macht das IF-Konstrukt nicht mehr viel Sinn ![;)](/images/smilies/wink.gif) Es würde also if(!file_exists($dest_file))
imagejpeg($image_small, $dest_file, 100);
reichen. Ich glaub das Beste wäre aber, mit einem Script gleich das Anzeigen und das Resizen/Ablegen zu übernehmen. Dazu könnte man vorher im Thumb-Cache nachsehen, ob das Bild schon verkleinert wurde und dieses dann gleich anzeigen, anstatt es (so wie in dem Script aus dem das obere Code-Fragment stammt) nochmal zu resizen.
Bearbeitet von jives am 27.09.2008, 23:25
|
jives
And the science gets done
|
Sorry, Doppelpost.
|
LTD
frecher fratz
|
Ok vielen Dank... irgendwie drücke ich mich wohl falsch aus:
Meine Schleife funktioniert nicht - ich weiß, dass ich es in einer Schleife lösen kann, aber WIE?! Wie ich eine Funktion aufrufen kann ist mir klar, aber wie rufe ich diese Funktion in einer anderen Seite auf? -> das was Jives vorschlägt meint auch der Schreiber des Codes oben, aber ich verstehe einfach nicht wie ich auf Seite A abfrage welche Files im Ordner sind und dann Seite B öffne und die Infos von Seite A rüberschiebe... =)
Google hilft mir da auch nicht weiter, vermutlich weil ich nach dem falschen suche ...
Das Script legt mir brav einen blöden File ab, schmeisse ich es in die While-Schleife, kickt er mich mit irgend einer blöden Fehlermeldung, die irgendwas mit der Zeile 72 zu tun hat (da wo Header ... steht).
|
jives
And the science gets done
|
![:D](/images/smilies/biggrin.gif) Herrlich an einander vorbei geschrieben ![;)](/images/smilies/wink.gif) Du hast bei deinem ersten Versuch ( http://www.overclockers.at/include_...758#post2678758) fast alles richtig gemacht, nur leider nachher zu viel gelöscht - alles ab dem header() inkl. gehört weg, nur eben die paar Zeilen die ich oben gepostet habe nicht. Edit: Um Daten von Script A nach Script B zu bekommen, gibt es mehrere Möglichkeiten, z.B. GET, POST, Sessions, Datenbanken, (temporäre) Dateien, usw. Aber in deinem Anwendungsfall reicht glaub ich mein erster Vorschlag mit dem GET. Du bist glaube ich auch auf dem richtigen Weg ![:)](/images/smilies/smile.gif) Wenn das Script mal brav Thumbs generiert, kann man ja über die nächsten Schritte mit Anzeigen und Cachen nachdenken. Edit 2: Schnell mal Code drangehängt: $filePath=$PATH.'imagesdb/full/'; # Specify the path you want to look in.
$dir = opendir($filePath); # Open the path
while ($file = readdir($dir))
{
if (eregi(".jpg",$file) && !eregi("._",$file))
{
$image_name = "$file";
$style = "thumb";
$file_compare = "imagesdb/$style/$image_name";
if(!file_exists($file_compare))
{
$dest_file = "imagesdb/$style/$image_name";
$image_file = "imagesdb/full/$image_name";
$size = getimagesize($image_file);
switch($style)
{
case "show":
$max_size = 800;
break;
case "thumb":
$max_size = 125;
}
if($size[0] > $size[1])
{
$divisor = $size[0] / $max_size;
}
else
{
$divisor = $size[1] / $max_size;
}
$new_width = $size[0] / $divisor;
$new_height = $size[1] / $divisor;
settype($new_width, 'integer');
settype($new_height, 'integer');
$image_big = imagecreatefromjpeg($image_file);
$image_small = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($image_small, $image_big, 0,0, 0,0, $new_width,$new_height, $size[0],$size[1]);
imagedestroy($image_big);
if(!file_exists($dest_file))
imagejpeg($image_small, $dest_file, 100);
imagedestroy($image_small);
}
}
}
Bearbeitet von jives am 27.09.2008, 23:53
|
LTD
frecher fratz
|
Herrlich an einander vorbei geschrieben ![;)](/images/smilies/wink.gif)
Du hast bei deinem ersten Versuch (http://www.overclockers.at/include_...758#post2678758) fast alles richtig gemacht, nur leider nachher zu viel gelöscht - alles ab dem header() inkl. gehört weg, nur eben die paar Zeilen die ich oben gepostet habe nicht.
Edit: Um Daten von Script A nach Script B zu bekommen, gibt es mehrere Möglichkeiten, z.B. GET, POST, Sessions, Datenbanken, (temporäre) Dateien, usw. Aber in deinem Anwendungsfall reicht glaub ich mein erster Vorschlag mit dem GET. Du bist glaube ich auch auf dem richtigen Weg Wenn das Script mal brav Thumbs generiert, kann man ja über die nächsten Schritte mit Anzeigen und Cachen nachdenken.
Scheint ich bin für den Spaß einfach zu blöde. Habe nun folgendes und es passiert gar nichts (also weder Fehlermeldung noch Files) <?PHP
//function num_files($directory='.') {
// return count(glob($directory."/*.*"));
//}
//this will find the number of files (only files) in "/horse/cat/"
//$file_count = num_files("imagesdb/full/");
$string="";
$fileCount=0;
$filePath=$PATH.'imagesdb/full/'; # Specify the path you want to look in.
$dir = opendir($filePath); # Open the path
while ($file = readdir($dir)) {
if (eregi(".jpg",$file) && !eregi("._",$file) ) {# Look at only files with a .jpg extension
$image_name = "$file";
}
}
$style = "thumb";
// I've taken the foldernames. It's easier. For the
//thumbnails replace "show" with "thumb".
$file_compare = "imagesdb/$style/$image_name";
if(!file_exists($file_compare)){
switch($style) {
case "show":
$max_size = 800;
break;
case "thumb":
$max_size = 125;
}
$dest_file = "imagesdb/$style/$image_name";
// set output file
$image_file = "imagesdb/full/$image_name";
// set source file
$size = getimagesize($image_file);
// get original size
if($size[0] > $size[1]) {
$divisor = $size[0] / $max_size;
}
else {
$divisor = $size[1] / $max_size;
}
// to get allways pictures of the same size, which ist
// mostly wanted in imageviewers, look what ist larger:
// width or height
$new_width = $size[0] / $divisor;
$new_height = $size[1] / $divisor;
// set new sizes
settype($new_width, 'integer');
settype($new_height, 'integer');
// sizes should be integers
$image_big = imagecreatefromjpeg($image_file);
// load original image
$image_small = imagecreatetruecolor($new_width, $new_height);
// create new image
imagecopyresampled($image_small, $image_big, 0,0, 0,0, $new_width,$new_height, $size[0],$size[1]);
// imageresampled whill result in a much higher quality
// than imageresized
imagedestroy($image_big);
// the original data are no longer used
if(!file_exists($dest_file))
imagejpeg($image_small, $dest_file, 100);
$fileCount++;
}
else {
echo "Nothing to convert!";
}
?>
EDIT: Sorry! Er erstellt doch einen File, leider wieder nur einen einzigen ;/ (den ersten halt)... danach hört er auf.
|
jives
And the science gets done
|
Hab oben in meinem Post noch Code drangehängt. Der sollte funktionieren (habs nicht getestet, ist aber eine schlankere Variante von deinem Script). Bei deinem letzten Post hast du einfach nur vergessen, das Ganze noch in die while-Schleife zu bugsieren
|
LTD
frecher fratz
|
WAAAAHHHHH ES GEHT! Ich Depp hatte nur die Funktion nicht in der Schleife!
Boah sorry *g* so dumm muss man erstmal sein =)
|
jives
And the science gets done
|
![:cool:](/images/smilies/cool.gif) Willst du die Thumbs jetzt auch gleich von dem Script anzeigen lassen?
|
LTD
frecher fratz
|
![:cool:](/images/smilies/cool.gif)
Willst du die Thumbs jetzt auch gleich von dem Script anzeigen lassen?
*gg* Also was ich jetzt noch will wären die 2 Dinge: 1. mit einer anderen Seite starten (so dass ich beim Ansurfen der Gallery die Pics generiere und nicht wenn ich "image.php" ansurfe (also der Link...) 2. Das ganze anzeigen lassen, in einer Tabelle mit 3*x (Spalten, Zeilen) Wenn du mir sagst wie ich die Bilder ausgebe bin ich natürlich sehr dankbar =)!
|
LTD
frecher fratz
|
Edit: hat sich erledigt! Scheinbar nimmt er das erste imagejpeg als Rückgabewert und da hatte ich das falsche drinnen stehen...
Bearbeitet von LTD am 28.09.2008, 11:12
|
LTD
frecher fratz
|
Langsam wird das ganze was: http://markusklug.macbay.de/gfx.phpJetzt noch rausfinden wie ich verschiedene Seiten mache und den ganzen Spaß so, dass ich nicht bei jeder Seite das Convert-Script ändern muss - perfekt!
|
jives
And the science gets done
|
Schaut ja schon sehr gut aus! Meinst du mit Seiten die verschiedenen Kategorien? Da könntest du einfach immer auf gallery.php verlinken und z.B. eine Kategorie-ID per GET mitgeben. Je nachdem werden dann die Pfade im Script zu deinen Unterverzeichnissen gesetzt, z.B. mit einem switch(). Wenn du die einzelnen Kategorien noch mit Seiten unterteilen willst, dann könntest du folgendes machen: Den Inhalt des Verzeichnisses in ein Array (z.B. $images[]) einlesen und je nach Anzahl der Files entsprechende Links zu den Seiten ausgeben. Die zeigen wieder auf gallery.php und geben einen Offset per GET mit - also z.B. gallery.php?offset=20 oder gallery.php?catid=3&offset=20. Dein Script läuft dann das Array $images[] per for-Schleife AB dem Offset n-mal durch und macht sonst genau das gleiche wie bisher in der while-Schleife for ($i = $_GET['offset']; $i < n; $i++) { ... $images[$i] ... }
Dann fehlt die nur noch die Lightbox ![:)](/images/smilies/smile.gif) Aber das ist für mich leider auch Neuland. Ich weiß zwar wie das prinzipiell funktioniert, aber hab sowas noch nicht umgesetzt. Vielleicht kann dir hier jemand Tipps geben, der da mehr Erfahrung hat...
Bearbeitet von jives am 28.09.2008, 13:11
|
~PI-IOENIX~
Pappenschlosser
|
aja, bei about me hast dein foto als "studivz" benannt, könntest ev. noch ändern
|
fatmike182
Agnotologe
|
wollte nur sagen: schaut super aus! ad verschiedene Seiten: meinst du, dass man zB 20 Fotos / seite hat & blättern kann? Das machst du (sofern du die Dateinamen in einer mysqlTabelle hast) mit der Abfrage beim Auslesen
|