wie mach ich thumbnails



  • hallo djblackeagle,
    habe jetzt gerade erst deinen beitrag gesehen/gelesen..
    hätte zwischendurch mal aktualisieren sollen 😉

    es wäre super wenn du mir den code aus deinem buch posten könntest 😉
    vorausgesetzt er ist nicht zu lang .. das hört sich nämlich sehr gut an mit dem automatischen anpassen der größe.
    danke schonmal.
    gruß,
    chris



  • KP (Kein Problem). 🙂
    Ich hoffe es macht dir nix aus dsas ich es um 23 Uhr poste, da ivch erst zuhause bin... 🙄

    [ Dieser Beitrag wurde am 30.09.2002 um 15:17 Uhr von DJ BlackEagle editiert. ]



  • das ist nicht schlimm, ich bin echt froh das du mir überhaupt hilfst 😉
    bis später,
    chris



  • Bei meiner Lösung müsste das Bild immer in 40x40 Pixeln angezeigt werden. Habe es natürlich nicht getestet, aber eigentlich müsste es gehen...



  • Original erstellt von Loggy:
    Bei meiner Lösung müsste das Bild immer in 40x40 Pixeln angezeigt werden. Habe es natürlich nicht getestet, aber eigentlich müsste es gehen...

    es wird nur ein 40x40 kästchen mit umrandung dargestellt. leider keine vorschau.
    trotzdem danke für deine hilfe .. 😉



  • Original erstellt von <chris>:
    das ist nicht schlimm, ich bin echt froh das du mir überhaupt hilfst 😉
    bis später,
    chris

    Mist. Schäm. Schuldigung,hab das total verpeilt. Werde es heute posten. Hoffe das war nicht extrem wichtig 😞



  • Sorry, war ein kleiner Fehler drin, so muss es aussehen (ohne $ natürlich):

    <?php
    header('Content-type: image/jpg');
    
    $image = ImageCreateFromJPEG($url);
    
    $smallimage = ImageCreate(40,40);
    
    ImageCopyResized($smallimage, $image, 0, 0, 0, 0, 40, 40, ImageSX($image), ImageSY($image));
    
    ImageJPEG($smallimage);
    ?>
    

    Bei mir gehts...



  • ich habe endlich den fehler gefunden..

    Fatal error: Call to undefined function: imagecreatefromjpeg() in c:\apache\htdocs\thumbs\thumbnails.php on line 4
    

    ich habe mich ein wenig herumgehört und gelesen das ich "gd" dafür brauche. leider habe ich keine ahnung wie ich das ans laufen bekomme.. ich habe phpv1.11.
    ist die version zu alt dafür?



  • Lad dir das neue PHP 4.2.3 runter, da ist das bei.
    da mußt du halt nur das Modul aktivieren...



  • hab es gelöst in dem ich einen eintrag in meiner php.ini auskommentiert habe.
    leider habe ich immernoch keine lauffähige version mit der ich thumbnails machen kann ..
    trotzdem vielen dank euch allen hier.
    gruß,
    chris



  • für jeden den es interessiert, stelle ich hier nochmal meine lösung zur verfühgung.
    ich habe iene funktion thumbnail erstellt, die mir die arbeit abnimmt.
    aber seht selber

    <?php
        // Der Funktion koennen natuerlich auch die pfade oder andere variablöen uebergeben werden ..
        function thumbnail($image_name /*, $image_path, $thumb_path*/) 
        {
            // Pfade bestimmen
            $image_path  = "../pics";
            $thumb_path  = "thumbs";
    
            $image_name  = $image_name.".jpg";
    
            // Quelle bestimmen
            $src_img     = imagecreatefromjpeg("$image_path/$image_name"); 
    
            // Bildbreite bestimmen
            $origw       = imagesx($src_img); 
            // Bildhoehe bestimmen
            $origh       = imagesy($src_img); 
    
            // Neue Breite bestimmen (Angaben in px)
            if($origw > $origh) {
                $new_w   = 149;
                $new_h   = 112;
            } else {
                $new_w   = 112;
                $new_h   = 149;
            }
    
            // Neuees Bild erzeugen
            $dst_img     = imagecreate($new_w, $new_h); 
            // Kopieren und Aendern der Groesse eines Bild-Teiles 
            imagecopyresized($dst_img, 
                             $src_img,
                             0,
                             0,
                             0,
                             0,
                             $new_w,
                             $new_h,
                             imagesx($src_img),
                             imagesy($src_img)); 
            // Ausgabe des Bildes im Browser oder als Datei
            imagejpeg($dst_img, "$thumb_path/$image_name");
            echo "<img src=\"$thumb_path/$image_name\">";
            return true; 
        }
    
        if(!$nr)
            $nr = 1;
    
        echo "
            <table width=\"100%\" border=\"0\">
                <tr>
                    <td align=\"center\" colspan=\"3\">";
                        echo "<img src=\"", $nr, ".jpg\">";
                        echo "
                    </td>
                </tr>
                <tr valign=\"bottom\">
                    <td>
                        <div align=\"left\">";
                        // Wenn es das erste Bild ist, soll kein Link oder thumbnail dargestellt werden
                        if($nr == 1) {
                            echo "<< previous";
                        } else {
                            echo "<a href=\"pbrowser.php?nr=", $nr-1, "\">";
                            thumbnail($nr-1);
                            echo "<< previous</a>";
                        }
                        echo "
                        </div>
                    </td>
                    <td align=\"center\" valign=\"top\" width=\"400\">
                        <a href=\"pbrowser.php?nr=1\">first</a>
                    </td>
                    <td align=\"right\">";
                        // Hier muss noch gearbeitet werden. Momentan gehts nur bis 28 Bilder ;-)
                        if($nr < 28) {
                            echo "<a href=\"pbrowser.php?nr=", $nr+1, "\">";
                            thumbnail($nr+1);
                            echo "next >></a>";
                        } else {
                            echo "next >>";
                        }
                        echo "
                    </td>
                </tr>
            </table>";
    ?>
    

    das einzige problem ist hier noch das max datei-limit. das heist man muss selber eingeben wieviele bilder in einem verzeichnis sind. bei mir waren es 28 😉
    ich weis leider nicht ob es dafür eine funktion o.ä. gibt.. habe keine gefunden !?

    @dj du bracuhst mir die lösung aus dem buch nicht mehr posten 😉
    @loggy wäre das nicht etwas für die faq?

    danke und gruß,
    christian aus bonn



  • Du speicherst jetzt aber den Thumbnail in einer extra Datei. Kann man machen.

    Dann kann ich aber überhaupt nicht nachvollziehen, wie du die Bilder aus dem Verzeichnis liest und in der Liste darstellst...
    Da ist keine while-Schleife, kein opendir usw.



  • es sollte einfach nur folgende funktion haben: http://www.walux.de/pics/pbrowser.php

    mehr wollte ich eigentlich nicht 😉
    eine kleine vorschau von allen bildern wäre auf der startseite, bevor mein script kommt vielleicht sinnvoll. sozusagen noch iene navigation ganz oben auf der seite ...



  • Ah so, ja.



  • Ok, chris. Das Buch habe ich auch nicht mehr.
    Ich habe mir das jetzt mal selbst programmiert, deine variante ist zwar gut, aber viel zu viel Code...

    Ich poste mal mein Code:

    <?php
      if(!$breit)
      {
        $breit = 150;
      }
      else
      {
        $breit = ceil($breit);
      }
      if(!$bild)
      {
        $quellbild = "test.jpg";
      }
      else
      {
        $quellbild = urldecode($bild);
      }
    
      $info = getimagesize($quellbild);
      $breitalt = $info[0];
      $hochalt = $info[1];
    
      $hoch = ceil($hochalt*$breit/$breitalt);
    
      switch($info[2])
      {
        case 1:
          $bildalt = imagecreatefromgif($quellbild);
          break;
        case 2:
          $bildalt = imagecreatefromjpeg($quellbild);
          break;
        default:
          break;
      }
    
      $bildneu = imagecreate($breit, $hoch);
      imagecopyresized($bildneu, $bildalt, 0, 0, 0, 0, $breit, $hoch, $breitalt, $hochalt);
    
    // Tip 1: ANFANG
      header("Content-Type: image/gif");
      imagegif($bildneu);
      imagedestroy($bildneu);
      imagedestroy($bildalt);
    // Tip 1 ENDE
    ?>
    

    Tip:
    Wenn du jpeg nutzen willst, kannst du halt

    header("Content-Type: image/jpeg");
    imagejpeg($bildneu,"",100);  // Die 100 steht für die Komprimierung
    imagedestroy($bildneu);
    imagedestroy($bildalt);
    

    [ Dieser Beitrag wurde am 03.10.2002 um 00:06 Uhr von DJ BlackEagle editiert. ]



  • @black
    dank dir für deine lösung, habe meines ein wenig angepass 😉
    danke und gruß,
    christian


Anmelden zum Antworten