Thumbnails erstellen und "cachen"

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von chrigu, 25.10.2004.

  1. chrigu

    chrigu Thread Starter MacUser Mitglied

    Beiträge:
    155
    Zustimmungen:
    0
    MacUser seit:
    08.03.2004
    Ich habe mir ein Script erstellt, das bei aufrufen mittels <img src="images/fotos/thumb.php?image=auto.jpg"> ein Thumbnail des in der Variabel definierten Bildes zurückgibt.

    Das thumb.php liegt im gleichen Verzeichniss wie die Bilder, von denen ein Thumb erstellt wird oder gegebenenfalls aus dem Cache Ordner ausgelesen wird.

    PHP:
    <?php
    // Bilderzeugung - thumb.php



    if (!is_dir("cache")) {
        
    mkdir("cache"0777); 
        }else {
        
    system("chmod 0777 ".cache);
        }

    $verz dir("images/fotos/cache");

    if (
    file_exists($verz.$_GET['image'])) {
        
    $iscached true;
        }else {
        
    $iscached false;
        }



    if (!
    $iscached) {
      
      
    header("Content-type: image/jpeg");
      
      
    $scale 4;
      
    $size getimagesize($_GET['image']);
      
    $width round($size[0]/$scale);
      
    $height round($size[1]/$scale);
      
    $src imagecreatefromjpeg($_GET['image']);
      
    $dest imagecreatetruecolor(69,69);
      
    imagecopyresized($dest$src, -10, -1000$width$height$size[0], $size[1]);
      
    imagejpeg($dest$verz.$_GET['image']);
      
    imagedestroy($dest);
      
    imagedestroy($src);

      }
      
      
    $image $verz.$_GET['image'];
      
      
    $image fopen($image"rb");
      
    fpassthru($image);
      
    fclose($image);
      
    ?>
    Leider will es nicht so, sobald ich den Inhalt der Verzweigung (!iscached) lösche ist das Script fehlerfrei, aber funktioniert natürlich nicht wie gewünscht. Ich vermute dort einen Fehler, den ich nicht gefunden habe, es könnte aber durchaus sein, dass ich generell einen Überlegungsfehler gemacht habe.

    Ich danke jedenfalls fürs mithelfen!
     
  2. tobias.beuth

    tobias.beuth MacUser Mitglied

    Beiträge:
    142
    Zustimmungen:
    0
    MacUser seit:
    06.09.2004
    Hat dir immer noch keiner geholfen? :)

    Ich werds mal versuchen.

    Dazu brauch ich aber zuerst mal die Fehlermeldung wenn es eine gibt.
    Wenns die nicht gibt, dann einfach mal beschreiben wie sich der Browser verhält.
     
  3. tobias.beuth

    tobias.beuth MacUser Mitglied

    Beiträge:
    142
    Zustimmungen:
    0
    MacUser seit:
    06.09.2004
    Also wenn der Browser einfach abbricht dann ist das meinst ein zeichen dafür das.
    ImageCreate (In irgend einer Form )nicht geklappt hat.

    Hab ich zumindest gerade gelesen.

    Probier es mal mit absoluten Pfaden. Damit kannst du das zumindest schonmal ausschliessen.
     
  4. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.045
    Zustimmungen:
    1.318
    MacUser seit:
    13.09.2004
    Grundsätzlich bei PHP:

    Soweit vereinfachen wie möglich, die gemeldeten Fehler helfen eher selten.
    Setz das Verzeichnis manuell, setze die Rechte manuell, kommentier das Setzen von ischached aus und entferne die if-clause. Per phpinfo nachsehen, ob gdlib funktioniert. Ist libjpeg installiert ? Sonst geht jpeg nämlich nicht.

    Sind size[0] und [1] gesetzt ?, nach welcher Zeile wird denn ein Fehler ausgegeben, wie lautet er? dann kann ich evtl. mehr sagen. Ich hab jetzt erst mal ne Besprechung...
     
  5. chrigu

    chrigu Thread Starter MacUser Mitglied

    Beiträge:
    155
    Zustimmungen:
    0
    MacUser seit:
    08.03.2004
    //Ihr seid schon zuvorkommend, weil beim nachbar phpforum habe ich bis
    //jetzt vergebens auf Hilfe gewartet.

    Ich bin mittlerweile soweit, dass die Variable $verz nun folgenden Wert: $verz = "cache/" hat, damit werden nun die Thumbs im Cache Ordner erstellt. kleiner Erfolg!

    Jetzt scheint die Übergabe der Bilder an den Browser nicht zu funktionieren, bin mir nicht sicher, ob ich das richtig gemacht habe. Wenn der Browser das Bild mit dem HTML-Tag <img src="images/fotos/thumb.php?image=auto.jpg">aufruft erscheint dieses Bild mit dem Fragezeichen.

    Ich weiss nicht so recht wo ich die
    PHP:
    header("Content-type: image/jpeg");
    Funktion einbauen soll, die soll ja verantwortlich sein damit das Bild an den Browser übergeben wird.

    Thanks, und grosses Lob an die Macuser-Community pepp
     
  6. tobias.beuth

    tobias.beuth MacUser Mitglied

    Beiträge:
    142
    Zustimmungen:
    0
    MacUser seit:
    06.09.2004
    Hi,
    fein das es doch noch geklappt hat.

    den header musst du so oder so senden wenn du kein html img ausgeben willst.
    also immer wenn du vom filesystem liest und das dann an den browser ausgeben willst.

    in deinem fall also immer, egal ob gecachte version oder nicht.
    auf jedenfall aber for dem fpassthru();

    wenn das nicht klappt sind hier noch ein paar header die vielleicht auch noch mitmüssten (nach dem mime-type)

    ach ja und einen zeilenumbruch nach jedem geschickten header. und nicht zu vergessen keine leerzeichen vor oder nach dem php-block.

    header("Content-Transfer-Encoding: binary\n");
    header("Content-Length: {$deine_file_groesse}\n");
     
  7. chrigu

    chrigu Thread Starter MacUser Mitglied

    Beiträge:
    155
    Zustimmungen:
    0
    MacUser seit:
    08.03.2004
    genau das wars, jetzt funktionierts!
     
Die Seite wird geladen...

Diese Seite empfehlen