wie mach ich thumbnails



  • 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