bild uploade qualitäts verlust

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

  • bild uploade qualitäts verlust

    Hallo Zusammen,
    Erst wenn man Total verzweifelt ist probiert man die Hilfe von PHP Profis zu erhalten. In dem Sinne: schon mal danke fürs weiterlesen.

    Problembeschreibung:
    Ich habe eine Funktion erstellt welche auch "Funktioniert". Aber die Qualität der Bilder wird schlecht. (Bild schärfe)

    Auf dem Server ist die neuste GDLIB intalliert. Kann mir bitte einer Weiterhelfen?

    Viele Dank im Voraus, bin für jeden Tipp dankbar!

    (für alle die noch eine funktion dieser art suchen: feel free to use it )

    PHP-Code:
    <?php
    # Thumbnail eines Bildes erstellen
        /*
            $source     = Wo liegt das zu verkleinerte Bild
            $mks        = der Aktuelle Ordner wo das Bild liegt
            $file        = neuer File name für dieses Bild
            $fileext     = ist es ein gif oder jpg (wird anhand eien andere funktion bestimmt)
            $dest         = Wo wird das neue (verkleinerte) Bild gespeichert
            $img_width     = Was ist die neue Breite des Bildes
            $img_height = Was ist die neue Höhe des Bildes
            $logoadd    = 0 = es wird kein wasserzeichen logo gesetzte; 1 = es wird eiens gesetzt
            
        */
    function MakeThumb($source,$mks,$file,$fileext,$img_width,$img_height,$logoadd=0) {

     
    // hier wird der File name definiert
    $dest $mks.$file."-".$img_width.$fileext;
                
    $FormatArr getimagesize($source);
    //Breite des Aktuellen Bild wird in die Variabeln src_width und src_height geschrieben
    list($src_width$src_height) = getimagesize($source);
                    
    ## Breite des Thumbniles wird berechnet (neue breite)
    // Wenn die Breite Grösser oder Gleich ist wie die Höhe
    if($src_width >= $src_height): 
        
    // Thumb Breite (aus $img_width)
        
    $new_image_width $img_width
        
    // Thumb Höhe wird berechnet
        
    $new_image_height $src_height $img_width $src_width
    endif;

    ## Höhe des Thumbniles wird berechnet (neue höhe)
    // Wenn die Breite kleiner ist als die Höhe
    if($src_width $src_height):
        
    // Thumb Höhe (aus img_width)          
        
    $new_image_height $img_width
        
    // Thumb Breite wird berechnet
        
    $new_image_width $src_width $img_height $src_height
    endif;

    ## Erzeugt ein neus (leeres) Bild
    $new_image imagecreatetruecolor($new_image_width$new_image_height);

    ## Kopiert und Schneidet ein Bild zu
    /*
    Das Bild aus $image wird in des neue Bild $new_image eingefügt in der X und Y Achse die Position 0. 
    Neue Breite und Höhe von $image wird angepasst. Ausgabe von $new_image (Be Erfolg)
    */
    switch($FormatArr[2]) {

    case 
    :
        
    //Das Bild öffnen, ist es vorhanden? (GIF FORMAT)
        
    $image = @imagecreatefromgif($source);
        
    imagecopyresampled($new_image$image0000$new_image_width,$new_image_height$src_width$src_height);

        if(
    imagegif($new_image$dest100)): return true; else: return false; endif;
    break;    

    case 
    :    
        
    //Das Bild öffnen, ist es vorhanden? (JPG FORMAT)
        
    $image = @imagecreatefromjpeg($source);
        
    imagecopyresampled($new_image$image0000$new_image_width,$new_image_height$src_width$src_height);
        if(
    imagejpeg($new_image$dest100)):
            
    // wasserzeichen hinzufügen
            
    if(!empty($logoadd) && $img_width=="590"):
            
    $origimage $dest;
            
    $logoimage "daswasserzeichenlogo.png";
            
    $origsize getimagesize($origimage);
            
    $logosize getimagesize($logoimage);
            
    $logo_im imagecreatefrompng($logoimage);
            
    $orig_im imagecreatefromjpeg($origimage);
            
    imagecopy($orig_im$logo_im$origsize[0] - $logosize[0], $origsize[1] - $logosize[1], 00$logosize[0], $logosize[1]);
            
    imagejpeg($orig_im$dest100);
            endif;
            
            return 
    true;     
        else: 
            return 
    false; endif;
    break;

    default : return 
    false; break;
    }    
    }
    ?>
    Zuletzt geändert von basilsue; 20.03.2008, 17:08.

  • #2
    code umbrechen wäre hilfreich.
    Zitat: Qualität wird schlecht - Bildschärfe

    wie schlecht? kann man nix mehr erkennen oder normal unscharf?
    bedenke das bei einem thumbnail ja weniger pixel vorhanden sind - daher auch eine schlechtere Quali ... habs getestet - bei mir sehen die thumbs recht vernünftig aus ;-)

    nur gif und jpeg ? was iss mit png ?
    Signatur-Text ...

    Kommentar


    • #3
      Danke erstmal für das Antwort. Sehr freundliche.

      Qualität: Mann kann schon etwas erkennen, ohne Probleme sogar, aber wenn ich es mit dem Original Bild vergleiche wirkt es "BLASSER" und nicht ganz so Scharf wie das Original. Die Thumbnails habe eine grösse von 600px (Sind ja dann eigentlich keine Thumbnails mehr )

      Der Fotoupload muss leider als JPG passieren, habe deshalb die anderen Formate nicht ausprobiert.

      ... an diesem Problem arbeite ich nun schon seit Wochen einfach traurig.

      Danke nochmals für jede Hilfe, Tipps. Ich war noch in einem anderen Forum: die haben mir nicht einmal einen Post zurück geschrieben.

      Kommentar


      • #4
        Vielleicht hilft dir das hier:
        PHP-Code:
        <?php

             
        /*##############################################
             #          - Thumbnail-Script v1.3 -           #
             # Generating thumbnails 'on-the-fly' with PHP  #
             #                                              #
             #  (c) by Christian Lamine, FlashDreams OHG    #
             #          [url]http://www.flashdreams.de/[/url]          #
             #                                              #
             # This script may be freely used, distributed  #
             # and modified without any charge as long as   #
             # this copyright information is included.      #
             #                                              #
             # Any commercial selling of this script is     #
             # prohibited.                                  #
             #                                              #
             # The author is not responsible for possible   #
             # damage which may result from the application #
             # of this script, neither direct nor indirect. #
             # Use at your own risk!                        #
             ##############################################*/

             
        error_reporting(0);
             
        $x $_REQUEST['x'];
             
        $y $_REQUEST['y'];
             
        $image $_REQUEST['image'];
         
             
        $types = array (=> "gif""jpeg""png""swf""psd""wbmp");

             
        define ('cache''cache/');

             
        $cachedir substr($HTTP_GET_VARS['image'],0,strrpos($HTTP_GET_VARS['image'],'/') + 1).cache;
             !
        is_dir ($cachedir)
                  ? 
        mkdir ($cachedir0777)
                  : 
        system ("chmod 0777 ".$cachedir);

             (!isset (
        $x) || ereg ('^[0-9]{1,}$'$x$regs)) &&
             (!isset (
        $y) || ereg ('^[0-9]{1,}$'$y$regs)) &&
             (isset (
        $x) || isset ($y))
                  ? 
        true
                  
        : DIE ('Fehlende(r) oder ungültige(r) Größenparameter!');

             !isset (
        $resize) || !ereg ('^[0|1]$'$resize$regs)
                  ? 
        $resize 0
                  
        $resize;

             !isset (
        $aspectratio) || !ereg ('^[0|1]$'$aspectratio$regs)
                  ? isset (
        $x) && isset ($y)
                         ? 
        $aspectratio 1
                         
        $aspectratio 0
                  
        $aspectratio;

             !isset (
        $image)
                  ? DIE (
        'Es wurde kein Bild angegeben!')
                  : !
        file_exists($image)
                       ? DIE (
        'Die angegebene Datei konnte nicht auf dem Server gefunden werden!')
                       : 
        false;

             
        $imagedata getimagesize($image);

             !
        $imagedata[2] || $imagedata[2] == || $imagedata[2] == 5
                  
        ? DIE ('Bei der angegebenen Datei handelt es sich nicht um ein Bild!')
                  : 
        false;
         
             eval (
        '
             if (!(imagetypes() & IMG_'
        .strtoupper($types[$imagedata[2]]).')) {
                  DIE ("Das ".strtoupper($types[$imagedata[2]])."-Format wird nicht unterstützt!");
             }
             '
        );

             !isset (
        $x)
                  ? 
        $x floor ($y $imagedata[0] / $imagedata[1])
                  : 
        $x;
         
             !isset (
        $y)
                  ? 
        $y floor ($x $imagedata[1] / $imagedata[0])
                  : 
        $y;
         
             if (
        $aspectratio && isset ($HTTP_GET_VARS['x']) && isset ($HTTP_GET_VARS['y'])) {
                  if (
        $imagedata[0] > $imagedata[1]) {
                       
        $y floor ($x $imagedata[1] / $imagedata[0]);
                  } else if (
        $imagedata[1] > $imagedata[0]) {
                       
        $x floor ($y $imagedata[0] / $imagedata[1]);
                  }
             }

             
        $thumbfile substr ($HTTP_GET_VARS['image'], strrpos ($HTTP_GET_VARS['image'], '/') + 1);
             if (
        file_exists ($cachedir.$thumbfile)) {
                  
        $thumbdata getimagesize ($cachedir.$thumbfile);
                  
        $thumbdata[0] == $x && $thumbdata[1] == $y
                       
        $iscached true
                       
        $iscached false;
             } else {
                  
        $iscached false;
             }

             if (!
        $iscached) {
                  (
        $imagedata[0] > $x || $imagedata[1] > $y) ||
                  ((
        $imagedata[0] < $x || $imagedata[1] < $y) && $resize)
                       ? 
        $makethumb true
                       
        $makethumb false;
             } else {
                  
        $makethumb false;
             }

             
        Header ("Content-Type: image/".$types[$imagedata[2]]);
         
             if (
        $makethumb) {
                  
        $image call_user_func("imagecreatefrom".$types[$imagedata[2]], $image);
                  
        $thumb imagecreate ($x$y);
                  
        imagecopyresized ($thumb$image0000$x$y$imagedata[0], $imagedata[1]);
                  
        call_user_func("image".$types[$imagedata[2]], $thumb$cachedir.$thumbfile);
                  
        imagedestroy ($image);
                  
        imagedestroy ($thumb);
                  
        $image $cachedir.$thumbfile;
             } else {
                  
        $iscached
                       
        $image $cachedir.$thumbfile
                       
        $image $HTTP_GET_VARS['image'];
             }
             
        $image fopen ($image"rb");
             
        fpassthru ($image);
             
        fclose ($image);
         
        ?>
        Signatur-Text ...

        Kommentar


        • #5
          Passiert leider nicht viel. Habe die Variabeln:

          $x = $_REQUEST['x'];
          $y = $_REQUEST['y'];
          $image = $_REQUEST['image'];

          definiert. Es steht lediglich der Aktuelle Dokument Pfad auf der Seite-

          Kommentar


          • #6
            @TS
            Jetzt brich erstmal endlich deinen Code so um, dass man nicht horizontal Scrollen muss !!
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Original geschrieben von basilsue
              Passiert leider nicht viel. Habe die Variabeln:

              $x = $_REQUEST['x'];
              $y = $_REQUEST['y'];
              $image = $_REQUEST['image'];

              definiert. Es steht lediglich der Aktuelle Dokument Pfad auf der Seite-
              Bsp. aufruf:

              PHP-Code:
              <img src="thumb.php?image=1.png&x=80&y=80"
              Signatur-Text ...

              Kommentar


              • #8
                Natürlich mache ich alles damit ich eure Hilfe geniessen kann. Ich habe nun den Code umgebrochen.

                Ich habe einen Breiten Bildschirm und das deshalb nicht bemerkt.

                PHP-Code:
                <?php
                # Thumbnail eines Bildes erstellen
                    /*
                        $source     = Wo liegt das zu verkleinerte Bild
                        $mks        = der Aktuelle Ordner wo das Bild liegt
                        $file        = neuer File name für dieses Bild
                        $fileext     = ist es ein gif oder jpg (wird anhand eien andere funktion bestimmt)
                        $dest         = Wo wird das neue (verkleinerte) Bild gespeichert
                        $img_width     = Was ist die neue Breite des Bildes
                        $img_height = Was ist die neue Höhe des Bildes
                        $logoadd    = 0 = es wird kein wasserzeichen logo gesetzte; 1 = es wird eiens gesetzt
                        
                    */
                function MakeThumb($source,$mks,$file,$fileext,$img_width,$img_height,$logoadd=0) {

                 
                // hier wird der File name definiert
                $dest $mks.$file."-".$img_width.$fileext;
                            
                $FormatArr getimagesize($source);
                //Breite des Aktuellen Bild wird in die Variabeln src_width und src_height geschrieben
                list($src_width$src_height) = getimagesize($source);
                                
                ## Breite des Thumbniles wird berechnet (neue breite)
                // Wenn die Breite Grösser oder Gleich ist wie die Höhe
                if($src_width >= $src_height): 
                    
                // Thumb Breite (aus $img_width)
                    
                $new_image_width $img_width
                    
                // Thumb Höhe wird berechnet
                    
                $new_image_height $src_height $img_width $src_width
                endif;

                ## Höhe des Thumbniles wird berechnet (neue höhe)
                // Wenn die Breite kleiner ist als die Höhe
                if($src_width $src_height):
                    
                // Thumb Höhe (aus img_width)          
                    
                $new_image_height $img_width
                    
                // Thumb Breite wird berechnet
                    
                $new_image_width $src_width $img_height $src_height
                endif;

                ## Erzeugt ein neus (leeres) Bild
                $new_image imagecreatetruecolor($new_image_width$new_image_height);

                ## Kopiert und Schneidet ein Bild zu
                /*
                Das Bild aus $image wird in des neue Bild $new_image eingefügt in der X und Y Achse die Position 0. 
                Neue Breite und Höhe von $image wird angepasst. Ausgabe von $new_image (Be Erfolg)
                */
                switch($FormatArr[2]) {

                case 
                :
                    
                //Das Bild öffnen, ist es vorhanden? (GIF FORMAT)
                    
                $image = @imagecreatefromgif($source);
                    
                imagecopyresampled($new_image$image0000$new_image_width,$new_image_height$src_width$src_height);

                    if(
                imagegif($new_image$dest100)): return true; else: return false; endif;
                break;    

                case 
                :    
                    
                //Das Bild öffnen, ist es vorhanden? (JPG FORMAT)
                    
                $image = @imagecreatefromjpeg($source);
                    
                imagecopyresampled($new_image$image0000$new_image_width,$new_image_height$src_width$src_height);
                    if(
                imagejpeg($new_image$dest100)):
                        
                // wasserzeichen hinzufügen
                        
                if(!empty($logoadd) && $img_width=="590"):
                        
                $origimage $dest;
                        
                $logoimage "daswasserzeichenlogo.png";
                        
                $origsize getimagesize($origimage);
                        
                $logosize getimagesize($logoimage);
                        
                $logo_im imagecreatefrompng($logoimage);
                        
                $orig_im imagecreatefromjpeg($origimage);
                        
                imagecopy($orig_im$logo_im$origsize[0] - $logosize[0], $origsize[1] - $logosize[1], 00$logosize[0], $logosize[1]);
                        
                imagejpeg($orig_im$dest100);
                        endif;
                        
                        return 
                true;     
                    else: 
                        return 
                false; endif;
                break;

                default : return 
                false; break;
                }    
                }
                ?>

                Kommentar

                Lädt...
                X