"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

[PHP] Problem beim Thumbnail erstellen

tomstig 30.07.2005 - 01:04 2220 24
Posts

tomstig

OC Addicted
Avatar
Registered: Nov 2003
Location: /home/tomstig/
Posts: 1341
Leider muss ich dich enttäuschen, denn ich steh nicht auf der Leitung, sondern kenn mich mit meine Problem schlichtweg nicht aus.

Die Schleife ist also nicht schuld, meinst du. Dann weiß ich nicht, was sonst das Problem sein sollte. Ich mein, wenn ich die Schleife weglass, dann geht das Script. Also ist anzunehmen, dass irgendeine Funktion in der Schleife das Problem hervorruft, jedoch hält sich PHP mit der Fehlermeldung recht bescheiden, also eigentlich sagt die Fehlermeldung nur, dass irgendwas nicht funktioniert - auf soviel bin ich auch schon draufgekommen (mit oder ohne Kommentare und besserer Lesbarkeit).

Und dann kommst du und sagst mir, dass in dem Script etwas falsch ist. Versteh mich nicht falsch, aber sei mir nicht böse, wenn ich dich kurz und bündig arrogant. Du sagst mir, ich soll meinen Code auskommentieren (auch wenn ich ihn so verstehe, und wenn ein offensichtlicher Fehler drinnen gewesen wäre, hätte ich ihn auch ohne auskommentieren gefunden), sagst mir, dass etwas falsch ist, dass man es richtig stellen könnte, aber hältst dich mit Hinweisen zum Code relativ begrenzt.

Ich bin - und das trau ich mich von mir sagen - schon relativ fortgeschritten in PHP, die meisten Funktionen sind mir schon untergekommen, mir selber lernen kann ich nur noch wenig, außer durch analysieren von Code, wo ich mir hie und da noch einige Routinen herauslese und lerne (so z.B. habe ich heute gelernt, dass man bei isset mehrere Parameter schreiben kann und sie nicht durch && verbinden muss), oder durch Coden von neuartigen Dingen (CMS, Thumbnailgalleries). Jedoch - und auch das trau ich mich zu sagen - habe ich es nicht nötig, mir von PHP Manuals die ersten Seiten anzuschauen, wovon ich wahrscheinlich schon mehr als 9/10 kenne.

Um diesem Post jetzt auch noch ein Ende zu "schenken" will ich dir noch sagen, dass man auch durch Analysieren von hingeschmissenem Code lernen kann und nicht nur durch die von dir propangierte "Do-it-yourself"-Methode.
Jedoch stehe ich bei meinem Problem an und wenn ich jetzt Manuals durchlesen müsste um meinen Fehler zu entdecken (wobei du ihn ja anscheinend schon entdeckt hast), dann werde ich mit diesem Script nicht bis zum Ende der Sommerferien fertig (wobei das egal ist, weil es eh nur ein Script zum Üben und Lernen ist). Folglich wäre es nett, wenn du dich in Zukunft bei meinen Probleme nicht so knappe aussagen machen würdest, sondern mir sagst (oder zumindest hinweist - der Lernerfolg soll ja aufrecht erhalten bleiben), wo der Fehler sein könnte. Mit Verweisen auf diverse Funktionen weiß ich auch etwas anzufangen, falls dir das lieber ist.

In diesem Sinne...

Philipp

Here to stay
Registered: Jul 2001
Location: Wien
Posts: 1922
Zitat von tomstig
=> Die Schleife wird dran schuld sein....
Wie gehört es richtig?

Beispielsweise so:

Code: PHP
<?php 

if ($_GET['file'])
{
    $info = getimagesize('./pics/' . $_GET['file']); 
    
    if( $info['mime'] == 'image/jpeg' )
    {                     
        $breitalt = $info[0]; 
        $hochalt = $info[1]; 
        $breit = 100; 
        $hoch = ceil($hochalt*$breit/$breitalt); 
             
        if( $breitalt > $breit )
        {     
            $bildalt = imagecreatefromjpeg('./pics/' . $file);                                 
            $bildneu = imagecreatetruecolor($breit , $hoch);                 
            imagecopyresized($bildneu , $bildalt , 0 , 0 , 0 , 0 , $breit , $hoch , $breitalt , $hochalt); 
            header("Content-Type: image/jpeg"); 
            imagejpeg($bildneu); 
            imagedestroy($bildalt); 
            imagedestroy($bildneu);         
        }
    }
}
else
{
    if ($handle = opendir('pics')) 
    {      
        while(false !== ($file = readdir($handle)))
        {       
            $i = 0;
            if( $file != "." && $file != ".." )
            {
                $info = getimagesize('./pics/' . $file); 

                if( $info['mime'] == 'image/jpeg' )
                {           
                    echo '<img src="' . $_SERVER[PHP_SELF]. '?file=' . $file . '" alt="" />'; 
                }
                else
                {
                    echo '<a href="./pics/' . $file . '" alt="">' . $file . '</a>'; 
                } 
                $i++;          
            }      
            #if( $i % 5 == 0 ) 
            echo '<br />';            
        } 
        closedir($handle);
    } 
}

?>

rettich

Legend
waffle, waffle!
Avatar
Registered: Jan 2004
Location: wien
Posts: 794
erzeuge ein bild ODER eine html datei. beides gleichzeitig geht nicht.

tomstig

OC Addicted
Avatar
Registered: Nov 2003
Location: /home/tomstig/
Posts: 1341
@Philipp: Vielen Dank, ohne dich wäre ich auf diese Lösung nie gekommen... da ist es aber fraglich, wieso man ein einzelnes Bild (siehe $_GET['file']) verkleinern sollte?
BTW: Schau dir mal dein $_SERVER[PHP_SELF] und auf dieser Seite die "Array do's und don'ts" (musst ein bisschen runterscrollen) an...

@rettich: Wenn watchout sagt, dass man eine Galerie mit Thumbnails dynamisch erstellen kann, dann wird es eine Möglichkeit geben, das zu machen...
Bearbeitet von tomstig am 08.08.2005, 12:06

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
meine Antwort:
Zitat von watchout
Wenn du ein Bild resizen willst und dann ausgeben darf das nur der absolut einzige Content sein den du ausgibst - nur das Bild, sonst nichts. Wenn du ne Fehlermeldung hast, zerstört die das Bild - Genauso jede andere Ausgabe (per echo, print,...). Der richtige Header fehlt in deinem Fall auch noch.

deine Antwort:
Zitat
Sowas in der Art hab ich mir schon gedacht, nur wie funktionieren dann alle Galerien mit Thumbnails?

dio's Antwort:
Zitat von dio
Ich versteh zwar deine Frage nicht richtig, aber:
Code: PHP
<img src="bildscript.php?id=123">

Für mich is das eindeutig, was zu tun ist. Wäre ich an deiner Stelle mit der Frage gekommen, hätte ich mir spätestens bei dio's antwort aufn Kopf 'griffen und gedacht "Wie konnte ich das nur nicht sehn".

Für dich scheinbar nicht.

Na dann. Was du brauchst is einfach uns simpel. Du brauchst 2 Scripts - eines das nur das Bild ausgibt (was ja bei dir sogar schon funktioniert, weshalb ich - wohl fälschlicherweise lt. dir - der Meinung war du stehst nur auf der Leitung), und ein anderes das dein Verzeichnis durchläuft und ein HTML-File mit <img /> Tags befüllt, und deinem ersten script den gewünschten Filenamen als Parameter übergibt.

BTW:
(.) In der PHP-Doku unter "isset" steht eindeutig drinnen das mehrere Variablen erlaubt sind, also muss man sich nicht erst andere Scripts durchlesen.
(.) Wie fortgeschritten ein Programmierer ist hängt nicht davon ab wieviele Funktionen er auswedig gelernt hat, sondern wie schnell und wie gut er ein Problem lösen kann.
(.) Ich war der Meinung wenn du deinen Ablauf im Script hinschreibst erkennst du deinen Fehler - Die Meinung war wohl falsch.

tomstig

OC Addicted
Avatar
Registered: Nov 2003
Location: /home/tomstig/
Posts: 1341
Jetzt wo du dios (btw: http://www.idiotenapostroph.de.vu/ ) Antwort quotest, greif ich mir auch auf den Kopf. Ich bin grad am Weg zum Auto draufgekommen, was er damit wohl meint (an dieser Stelle, tut es mir leid, dio, dass ich deinen Post absichtlich überlesen habe, weil ich damit nichts anfangen konnte ;) ).
Mir ist jetzt erst bewusst geworden, was passiert, wenn ein <img /> auf ein dynamisches Bild verlinkt wird (nämlich dass das Script auch ganz normal aufgerufen wird).

Ok, werd mich später hinsetzen und das Script bauen...

tomstig

OC Addicted
Avatar
Registered: Nov 2003
Location: /home/tomstig/
Posts: 1341
So, habs geschafft...

Da die meisten, die sich für dieses Problem interessiert haben, die Lösung eh schon kennen werden, und watchout auch sicherlich nicht will, dass ich anderen etwas vorkaue, behalte ich den Code für mich (PMen ist möglich, wers wirklich dringend brauchen sollte...)

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von tomstig
Da die meisten, die sich für dieses Problem interessiert haben, die Lösung eh schon kennen werden, und watchout auch sicherlich nicht will, dass ich anderen etwas vorkaue, behalte ich den Code für mich (PMen ist möglich, wers wirklich dringend brauchen sollte...)
Ob du den Code nun mit anderen Leuten teilen willst oder nicht, ist deine Sache, ich finde es gibt schon genug Code hier um Einblicke zu geben usw. Die "Theorie" steht auch schon da - ist genug, aber wenn du den Code posten willst - mach' es (sucht eh' keiner, also findet's auch keiner)

BTW:
Zitat
In Ausnahmefällen kann auch im Deutschen der Apostroph im Genitiv gesetzt werden. Aber nur dann, wenn durch den Apostroph die Grundform eines Namens verdeutlicht wird.
-> Klug*******erchen. "dio" ist ein Eigenname - eine willkürliche Aneinanderreihung von Buchstaben (sorry dio) wenn man so will. Es könnte genausogut einen "dios" geben, und um das klarzumachen verwendet man/ich das Apostroph -> dio's. Dadurch ist klar das ich dio meine und nicht dios(.)

dio

Here to stay
Registered: Nov 2002
Location: Graz
Posts: 4876
Zitat von watchout
eine willkürliche Aneinanderreihung von Buchstaben (sorry dio)
dio ist italienisch für "Gott", und weiters die Abkürzung für Diocletian (dt. Diokletian) -> http://de.wikipedia.org/wiki/Diokletian

Ich danke für die Aufmerksamkeit :D :D :p
Bearbeitet von dio am 08.08.2005, 18:18

tomstig

OC Addicted
Avatar
Registered: Nov 2003
Location: /home/tomstig/
Posts: 1341
@watchout: Aso, hab nicht gewusst, dass du das beabsichtigt hast...

@dio: *applaus* :D
Bearbeitet von tomstig am 08.08.2005, 18:26
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz