JPEG-Thumbnail erstellen und ausgeben mit GD lib

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • JPEG-Thumbnail erstellen und ausgeben mit GD lib

    Hi,

    ich habe so meine Probleme mit der ausgabe von thumbnails mit hilfe der GD Lib:

    Im großen und gnazen klappt das super, allerdings hat die Siache einen großen Haken: Alle Bsp. die ich gefunden habe beginnen die ausgabe mit header (img/gpeg)". Soweit ja auch logisch, nur daß ich das nicht machen kann weil meine Thumbs später in einer Table mitten auf der Seite stehen sollen und ich somit keine Headers nehmen kann. Laß ich headers weg wird mir der "hexcode" vom Bild angezeigt (ist mir auch logisch).

    Der 2. Versuch war das ganze mit tempfiles zu machen also per ImageJPEG in ein file schreiben und dieses mit <img src=""> einbinden...WÜRDE auch klappen allerdings muß ich dann wieder eine kleine Verwaltung schreiben die darauf achtet daß die User nicht gegenseitig Ihre tempfiles überschrieben, die tempfiles wieder löscht und chekced ob die noch gebraucht werden, daß wird mir zu kompliziert und aufwendig

    Weiß Jemand noch eine andere Möglichkeit thumbnails OHNE Files zu erzeugen und ausgeben zu lassen , wenn man die Dinger nicht auf eine leeren Seite sondenr mitten drin irgendwo benötigt ?

    Thx
    Heiko

  • #2
    Hi kannst du mal bitte dein Beispiel posten? Weil das hilft denke ich. Außerdem suche ich auch noch ein gutes Beispiel
    Andre K.
    krumb.a@uo-mittelerde.de
    Alphapage unter:
    www.uo-mittelerde.de

    Kommentar


    • #3
      hier diese script wandelt automatisch alle bilder im verzeichniss bilder und specihert die tumbnails in im tmp verzeichniss

      bei klick auf tumb wird dann das grosse bild aufgerufen
      hoffe ist das was du suchst

      so jetz noch ne frage
      da dieses script aber leider nur für jpgs ist weis jemand wie mann das eventuell erweitern könnte für gifs png bmp ect...

      PHP-Code:
      <?php
      $tmp_dir 
      "tmp"//zielpfad für die thumbnails
      $pic_dir "bilder"//pfad, wo die originalbilder liegen
      $anz_pic 0
      $d_o opendir($pic_dir);
      while(
      $imagefile readdir($d_o)) { 
       if(
      eregi("\.{1,2}$",$imagefile)){
        continue;
       }else{
        
      $src_img imagecreatefromjpeg("$pic_dir/$imagefile"); 
        if (
      imagesx($src_img) > imagesy($src_img)) {
      //hier könnt ihr das format für die tumbs einstellen   
      $new_w 100;
         
      $new_h imagesy($src_img) / imagesx($src_img) * 100;
        }else{
         
      $new_h 100;
         
      $new_w imagesx($src_img) / imagesy($src_img) * 100;
        }
        
      $dst_img imagecreate($new_w,$new_h); 
        
      imagecopyresized($dst_img,$src_img,0,0,0,0,$new_w,$new_h,imagesx($src_img),imagesy($src_img)); 
        
      imagejpeg($dst_img"$tmp_dir/$imagefile"); 
        echo 
      "<a href=\"$pic_dir/$imagefile\" title=\"Ein Click fuer's grosse Bild \"><img src=\"$tmp_dir/$imagefile\" border=\"0\"></a><br>\n";
        
      $anz_pic++;
        echo 
      "Bild <b>$imagefile</b> umgewandelt. (bereits $anz_pic Stück)<br><br>\n"
       } 
      }
      echo 
      "<b>Verzeichnis  umgewandelt</b>";
      ?>
      Zuletzt geändert von blue_fire; 06.05.2002, 14:21.

      Kommentar


      • #4
        Das Problem hatte ich auch, dass ich nir mit JPG arbeiten konnte, hab aber auch keine Lösung gefunden

        Kommentar


        • #5
          blue_fire deine Funktion ging leider bei mir nicht.
          if(eregi(".{1,2}$",$imagefile)) das war glaube ich das Problem. Da wird doch geschaut ob ein oder 2 Punkte da sind weil das beim auslesen ja immer ausgegeben wird. Aber in z.B. bild.jpg ist auch ein Punkt. Ich habs so gemacht dass einfach geprüft wird ob es ein File ist. Das geht besser. Mein Quelltext sieht nun so aus:


          PHP-Code:
          <?php
          $dirs
          ="inc/screenshots/gross/";
          $handle=opendir ("$dirs");
          $new="inc/screenshots/klein/";
          $dir="/www/htdocs/dfsg/php-junk/inc/screenshots/gross";
          $anz_pic=0;
          while (
          false !== ($file readdir ($handle)))
          {
          $typ filetype ("$dir/$file");    
          if(
          $typ == file){
          echo
          "$file";
              
          $src_img imagecreatefromjpeg("$dir/$file"); 
                    if (
          imagesx($src_img) > imagesy($src_img))
                  {
                      
          //hier könnt ihr das format für die tumbs einstellen   
                      
          $new_w 100;
                         
          $new_h imagesy($src_img) / imagesx($src_img) * 100;
                    }
                    else
                  {
                         
          $new_h 100;
                         
          $new_w imagesx($src_img) / imagesy($src_img) * 100;
                    }
                    
          $dst_img imagecreate($new_w,$new_h); 
                    
          imagecopyresized($dst_img,$src_img,0,0,0,0,$new_w,$new_h,imagesx($src_img),imagesy($src_img)); 
                    
          imagejpeg($dst_img"$new/$file"); 
                    echo 
          "<a href=\"$dirs$file\" title=\"Ein Click fuer's grosse Bild \"><img src=\"$new/$file\" border=\"0\"></a><br>\n";
                    
          $anz_pic++;
                    echo 
          "Bild <b>$imagefile</b> umgewandelt. (bereits $anz_pic Stück)<br><br>\n";
          }}
          closedir($handle); 
          ?>
          Andre K.
          krumb.a@uo-mittelerde.de
          Alphapage unter:
          www.uo-mittelerde.de

          Kommentar


          • #6
            tja jetz müssen wir das nur noch dahingehend entwicken das das für andere bildformate auch klappt

            hoffe hier hat jemand nen tip

            Kommentar


            • #7
              Original geschrieben von blue_fire
              tja jetz müssen wir das nur noch dahingehend entwicken das das für andere bildformate auch klappt

              hoffe hier hat jemand nen tip
              Vor allem würde ich mit imageTypes()

              erstmal prüfen welche Bildformate Deine PHP-Version oder die Deines Providers unterstützt ... GIF ist ja z.B. mittlerweile eher selten geworden.
              carpe noctem

              [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
              [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

              Kommentar


              • #8
                naja mein hoster untstützt gif pnp jpg wbmp


                habe hier nen script gefunden wie müsste mann das anpassen das es so funktioniert wie das obige script für jpgs

                PHP-Code:
                <?php  
                //    Image thumbnail0r (with an "0" :]) 
                //    mike[@]filespanker.com 
                // 
                //    PARAMETERS: 
                // 
                //    img:   
                //        The image file as relative to THIS script. 
                //    h: 
                //        The thumbnail's height.    Default: 30 
                //    w: 
                //        The thumbnail's width.    Default: 30 
                //    mode: 
                //        1          = stretch:      The image is resized to height and width 
                //        0[default] = proportioned: The image is shrunken, but keeps proportions 
                //    type: 
                //        [optional] 
                //        jpg         = JPEG 
                //        gif        = GIF 
                //        png        = PNG 
                //        If this is not set, it is determined by its file extension. 
                // 
                //    This script's functions rely completely on your gd lib version. 
                // 
                //    So, if I recall correctly: 
                //        gd v1.5 or lower : GIF 
                //        gd v1.6 or higher: PNG 
                //        gd v1.8 or higher: PNG and JPEG   
                // 
                //    So, all three image types should never work on the same gd lib :[ 
                //    You can thank Unisys for that. 
                //     
                //    Before mailing me, please actually look at the code.    
                //Theres not much I could have really screwed up, and its probably an 
                //    issue with your gd library.  Try up/downgrading it.   

                // Configuration: 


                //// CODE 

                if (!isset($w))  
                    { 
                    
                $w 50;  
                    } 

                if (!isset(
                $h))  
                    { 
                    
                $h 50;  
                    } 


                SetType($mode,   'integer');  
                SetType($w,      'integer');  
                SetType($h,     'integer');  
                SetType($img,     'string' );  

                function 
                percent($p$w)  
                    { 
                    return (real)(
                100 * ($p $w));  
                    } 

                function 
                unpercent($percent$whole)  
                    {  
                    return (real)((
                $percent $whole) / 100);  
                    }  

                // Initialization 

                // Make sure the file exists... 
                if (!file_exists($img))  
                    {  
                    echo 
                "Error: could not find file: $img.";  
                    exit();  
                    }  

                // If the user defined a type to use. 
                if (!isset($type))  
                    {  
                    
                $ext explode('.'$img);  
                    
                $ext $ext[count($ext)-1];  
                        switch(
                strtolower($ext))  
                            {  
                            case 
                'jpeg'  :   
                                
                $type 'jpg';  
                            break;  
                            default :  
                                
                $type $ext;  
                            break;  
                            }  
                    }  

                // Create the image... 
                switch (strtolower($type))  
                    {  
                    case 
                'jpg':  
                        
                $tmp imagecreatefromjpeg($img);     
                    break;  

                    case 
                'gif':  
                        
                $tmp = @imagecreatefromgif($img);     
                    break;  
                     
                    case 
                'png':  
                        
                $tmp = @imagecreatefrompng($img);     
                    break;  
                     
                    default:  
                        echo 
                'Error: Unrecognized image format.';  
                        exit();  
                    break;  
                    }  

                if (
                $tmp)  
                    {  
                    
                // Resize it 
                     
                    
                $ow  imagesx ($tmp);    // Original image width 
                    
                $oh  imagesy ($tmp);    // Original image height 

                    
                if ($mode)  
                        {  
                        
                // Just smash it up to fit the dimensions 
                        
                $nw $w;  
                        
                $nh $h;  
                        }  
                    else  
                        {  
                        
                // Make it proportional. 
                        
                if ($ow $oh)  
                            {  
                            
                $nw  $w;  
                            
                $nh unpercent(percent($nw$ow), $oh);          
                            }  
                        else if (
                $oh $ow)  
                            {  
                            
                $nh $h;  
                            
                $nw unpercent(percent($nh$oh), $ow);  
                            }  
                        else  
                            {  
                            
                $nh $h;  
                            
                $oh $w;  
                            }  
                        }  

                    
                $out imagecreate($nw$nh);  
                    
                imagecopyresized($out$tmp0000$nw$nh$ow$oh);  
                    
                imagedestroy($tmp);  
                    }  
                else  
                    {  
                    echo 
                'Could not create image resource.';  
                    exit;  
                    }  


                if (
                $out)  
                    {  
                    switch (
                strtolower($type))  
                        {  
                        case 
                'jpg':  
                            
                header('Content-type: image/jpeg');  
                            
                imagejpeg($out);  
                        break;  

                        case 
                'gif':  
                            
                header('Content-type: image/gif');  
                            
                imagegif($out);  
                        break;  

                        case 
                'png':  
                            
                header('Content-type: image/png');  
                            
                imagepng($out);  
                        break;  
                        }  
                    
                imagedestroy($out);  
                    }  
                else  
                    {  
                    echo 
                'ERROR: Could not create resized image.';  
                    }  

                ?>  
                Example  
                thumbnail.php?img=images/mypic.png?w=30&h=30&mode=0

                Kommentar


                • #9
                  Also ich hab einfach mit php info geschaut welche Module die PHP Installation hat. Glücklicherweise waren die für Images dabei. Das wars aber fast schon
                  Andre K.
                  krumb.a@uo-mittelerde.de
                  Alphapage unter:
                  www.uo-mittelerde.de

                  Kommentar

                  Lädt...
                  X