[PHP] Thumbs erstellen Problem

Dieses Thema im Forum "Webentwicklung" wurde erstellt von blaah, 12. Juni 2007 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 12. Juni 2007
    Thumbs erstellen Problem

    jo,

    ich benutze folgene funktion um thumbs zu erzeugen.
    bevor ich die thumbs erstelle frage ich ab ob das bild kleiner wie 1mb ist
    und ob es mit der endung gif, jpg oder png endet.

    falls das alles zutrifft rufe ich die funktions thumbs auf.

    mein problem. hatte schon mehrmals das z.B. ein jpg nicht angenommen wurde. es kam ein weißer bildschirm. kann es sein damit das mit der bit anzahl der bild quali liegt?

    wenn ich das bild dann nehme und mit photoshop abspeichere (gleiche format) nimmet die funktion das bild an.

    sieht jemand die schwachstelle bzw weiß wie man das besser machen könnte??


    PHP:
    function  thumb ( $file $save $width $height $prop  TRUE )
    {
        
    // Requires GD-Lib > 1.6
        // Ist $prop=TRUE, so werden die Proportionen des Bildes
        // auch im Thumbnail eingehalten

        
    @ unlink ( $save );
        
    $infos  = @ getimagesize ( $file );
        if(
    $prop )
        {
            
    // Proportionen erhalten
            
    $iWidth  $infos [ 0 ];
            
    $iHeight  $infos [ 1 ];

            if(
    $iWidth  $width  and  $iHeight  $height )
            {
                
    $iNewW  $iWidth ;
                
    $iNewH  $iHeight ;
            }
            else
            {
                
    $iRatioW  $width  $iWidth ;
                
    $iRatioH  $height  $iHeight ;
                if (
    $iRatioW  $iRatioH )
                {
                    
    $iNewW  $iWidth  $iRatioW ;
                    
    $iNewH  $iHeight  $iRatioW ;
                }
                else
                {
                    
    $iNewW  $iWidth  $iRatioH ;
                    
    $iNewH  $iHeight  $iRatioH ;
                } 
    // end if
            
    }
        }
        else
        {
            
    // Strecken und Stauchen auf Größe
            
    $iNewW  $width ;
            
    $iNewH  $height ;
        }

        if(
    $infos [ 2 ] ==  1 )
        {
           
    // Bild ist vom Typ gif
           
    $imgA  imagecreatefromgif ( $file );
           
    $imgB  imagecreatetruecolor ( $iNewW , $iNewH );
           
    imagecopyresampled ( $imgB $imgA 0 0 0 0 $iNewW ,
           
    $iNewH $infos [ 0 ],  $infos [ 1 ]);

           
    imagegif ( $imgB $save );
           if(
    $text )
                
    text_bild ( $save $text $iNewW );
        }
        if(
    $infos [ 2 ] ==  2 )
        {
            
    // Bild ist vom Typ jpg
            
    $imgA  imagecreatefromjpeg ( $file );
            
    $imgB  ImageCreateTrueColor ( $iNewW , $iNewH );
            
    imagecopyresized ( $imgB $imgA 0 0 0 0 $iNewW ,
                             
    $iNewH $infos [ 0 ],  $infos [ 1 ]);

            
    imagejpeg ( $imgB $save );
            if(
    $text )
                
    text_bild ( $save $text $iNewW );
        }
        if(
    $infos [ 2 ] ==  3 )
        {
            
    // Bild ist vom Typ png
            
    $imgA  imagecreatefrompng ( $file );
            
    $imgB  imagecreateTrueColor ( $iNewW $iNewH );
            
    imagecopyresized ( $imgB $imgA 0 0 0 0 $iNewW ,
                             
    $iNewH $infos [ 0 ],  $infos [ 1 ]);

            
    imagepng ( $imgB $save );
            if(
    $text )
                
    text_bild ( $save $text $iNewW );
        }
        else
        {
            return 
    FALSE ;
        }
    }
    danke!
     
  2. 13. Juni 2007
    AW: Thumbs erstellen Problem

    vl. sind transparente inhalte drin
     
  3. 13. Juni 2007
    AW: Thumbs erstellen Problem

    nee das sind ganz normale bilder, das muss an was anderem liegem!!!
     
  4. 13. Juni 2007
    AW: Thumbs erstellen Problem

    erster Schritt wäre mal die "@" wegzumachen und error_reporting auf E_ALL zu stellen!
     
  5. 13. Juni 2007
    AW: Thumbs erstellen Problem

    hier liegt das problem:

    $imgA = imagecreatefromjpeg($file);

    hier macht er bei manchen bilder ned weiter!

    ==========================================

    hab mir mal ein paar sachen durchgelesen. angeblich hat das was mit der größe des bildes wärend der berechnung zu tun. besser gesagt um den speicherbedarf bei berechnen des bildes. und zwar lädt imagecreatefromjpeg($file); das bild komplett originalgröße in den speicher (mit 24 bit (true color)). und ein bild mit einer gewissen größe * 24 bit ist verdammt groß und kommt einem bmp verdammt nah.

    jetzt wie kann ich das problem lösen ?

    hauptsache es kommt keine weiße seite mehr


    gruß blaah
     
  6. 14. Juni 2007
    AW: Thumbs erstellen Problem

    Dann initialisier einen Platzhalter statt mit imagecreatefromjpeg, imagecreatefromgif, imagecreatefrompng immer mit PHP: imagecreatetruecolor - Manual
     
  7. 14. Juni 2007
    AW: Thumbs erstellen Problem

    Es kann auch sein, dass der RAM den PHP zu Verfügung hat, nicht ausreicht. Warum das nur bei manchen Bildern auftritt weiß ich nicht, aber es tritt halt auf.

    Ich weiß nicht was du für Rechte auf dem Server hast, aber das hat bei mir das Problem behoben bzw umgangen:
    PHP:
         // Workaround for failed pics
        
    ini_set  ( 'memory_limit' '60M'  );
    @MakenX: Das macht er doch, mit imagecreatetruecolor kann man aber nicht imagecreatefromjpg/gif ersetzen

    Allerdings noch ein Tipp: imagecopyresized() durch imagecopyresampled() ersetzen, sieht um einiges Besser aus. Dadurch werden die Pixel nicht einfach eliminiert sondern interpoliert, sodass das Endbild nicht so verpixelt aussieht.
     
  8. 14. Juni 2007
    AW: Thumbs erstellen Problem

    Jo, asnyc, stimmt hast recht, hab isch misch wohl vertan!
     
  9. 14. Juni 2007
    thx für die hilfreiche replys.

    ich schau gleich mal danach, hab mich schon gewundert, warum die bilder so pixelig aussehn ^^

    danke!

    gib dann ein feedback ob es geklappt hat

    geil!!! es geht!

    ist mal sehr komischd dauert zwar etwas, aber es geht!!!

    nochmal danke, an euch!

    bw habt ihr
     
  10. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.