imagejpeg gif zu jpeg umkonventieren

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

  • imagejpeg gif zu jpeg umkonventieren

    Hallo!

    Ich bin gearde dabei meine Fotos kompeltt in jpeg zu konventieren. Dazu benutze ich die Funktion imagejpeg().
    Beim Anlegen des temporären Bildes, bekomme ich folgende Ausgabe "resource(46) of type (gd) imagejpeg". Soweit ich weiß, muss in der Variable image, der Pfad des Bild liegen oder?

    PHP-Code:
    function _create_thumbnails($filename$dest$dest1$sizes)
        {
                
    //print_r($filename);
                
    $filepath $dest.$filename;
            
                
                
    $image $this->_imagecreatefromfilepath($filepath);
                echo 
    $image;             
                
    var_dump($image);
            
    // Get new dimensions
            
    list($old_width$old_height) = getimagesize($filepath);

            foreach (
    $sizes as $size) {
             
                list(
    $new_width$new_height) = self::$thumb_sizes[$size];
                
    $ratio min($new_width $old_width$new_height $old_height);
                if (
    $ratio 1) {
                    
    // don't scale small images to big
                    
    $newim $image;
                } else {
                    
    $new_width $old_width $ratio;
                    
    $new_height $old_height $ratio;
                    
    $newim imagecreatetruecolor($new_width$new_height);
                    
    imagecopyresampled($newim$image0000,
                        
    $new_width$new_height$old_width$old_height);
                }
               
    $outfilepath $dest1.$size.'/'.$filename;
                if (!
    $this->_imagesave($newim$outfilepath)) {
                    return 
    false;
                }
            }
            return 
    true;
        } 
    PHP-Code:
        function _get_imagetype($filepath)
        {
          
            foreach(
    self::$allowed_filetypes as $filetype) {
                if (
    substr($filepathstrlen($filetype)) == $filetype) {

                    if (
    $filetype == 'jpg') {
                        
    $filetype 'jpeg';
                    } elseif (
    $filetype == 'gif') {

                      
    $filetype 'gif';
                    }
                    return 
    $filetype;
                }
            }
        } 
    PHP-Code:
        function _imagecreatefromfilepath($filepath)
        {
            
    $imcreatefunction 'imagecreatefrom'.$this->_get_imagetype($filepath);
            return 
    $imcreatefunction($filepath);
        } 

  • #2
    Und was genau ist jetzt deine Frage? Weisst du nicht was eine Image-Ressource ist?
    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


    • #3
      In $filepath steht der Dateiname... Aber wie jahlives schon sagte, was ist das Problem?

      Kommentar


      • #4
        Danke!

        Also bedeutet das, das in "Resource id #49", mein temporäres Foto liegt?

        Das Problem ist, das ein gif bild nicht zu jpeg umkonventiert wird.

        PHP-Code:
         function _imagesave($image$filepath)
            {
                
        $filetype $this->_get_imagetype($filepath);
                
        $imagesavefunction "image".$filetype;
                
        print_r($image);
                if (
        $filetype == 'jpeg') {  
                    return 
        $imagesavefunction($image$filepath90);
                } else if (
        $filetype == 'gif') {
                    return 
        $imagesavefunction($image$filepath90);
                   
        //++ ergibt imagejpeg(Resource id #48, /static/data/123/12324/80/1210852119_dp_bild_berater_4.gif, 90);
                
        } else {
                    return 
        $imagesavefunction($image$filepath);
                }
            } 
        Zuletzt geändert von der_meier_hans; 15.05.2008, 14:06.

        Kommentar


        • #5
          PHP-Code:
          //++ ergibt imagejpeg(...); 
          Kann nicht sein. Entweder ist $filetype "gif" oder "jpeg". Beides zusammen geht nicht.

          Kommentar


          • #6
            stimmt mein Fehler:

            imagegif(Resource id #48, /static/data/123/12324/80/1210852119_dp_bild_berater_4.gif, 90);

            Kommentar


            • #7
              imagegif() hat nur 3 Parameter.

              Kommentar


              • #8
                imagegif() hat glaube ich nur 2 Parameter. Habe das geändert, leider werden die Fotos weiterhin als gif's abgelegt.

                Kommentar


                • #9
                  Richtig, das ist auch der Sinn von imagegif(). Wenn du alles als JPG speichern willst, dann brauchst du den Filetype gar nicht ermitteln. Kannst einfach alles mit imagejpeg() wegspeichern.

                  Edit: Sehe jetzt erst, dass ich mich oben vertippt habe. Ich meinte natürlich 2.

                  Kommentar


                  • #10
                    Also wenn ich alles direkt mit imagejpeg() bearbeite, alo auch eingehende gif bilder, bekomme ich diese Fehlermeldungen:

                    PHP-Code:
                    Warningimagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpegJPEG library reports unrecoverable errorin 
                    C
                    :\xampp\htdocs\test.php on line 270

                    Warning
                    imagecreatefromjpeg() [function.imagecreatefromjpeg]: './static/data/123/12324/o/1210861380_dp_bild_berater_4.gif' is 
                    not a valid JPEG file in C
                    :\xampp\htdocs\test.php on line 270 
                    Zuletzt geändert von der_meier_hans; 15.05.2008, 16:46.

                    Kommentar


                    • #11
                      Du kannst doch keine imagecreatfromjpeg() Fkt für ein gif verwenden Diese Funktion erwartet die Daten bereits als JPEG.
                      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


                      • #12
                        Ist es denn gundsätzlich möglich gifs in jpeg zu konventieren?

                        Kommentar


                        • #13
                          Du hast anscheinend das Prinzip noch nicht verstanden. Die imagecreatefrom*() Funktionen erzeugen eine Imageresource. Wenn das Original ein JPG ist, nimmt man imagecreatefromjpeg(), wenn es ein GIF ist, dann imagecreatefromgif().
                          Die Imageresource ist quasi formatlos; weder GIF noch JPG. Um aus ihr wieder eine Datei, eine Kopie des Originals zu machen, benutzt man die image*() Funktionen.
                          Wenn es ein JPG werden soll imagejpeg(), wenn es ein GIF werden soll imagegif().

                          Jetzt kannst du dir deine Frage selbst beantworten.

                          Kommentar


                          • #14
                            Das es schwer ist das Handbuch zu lesen, ist klar. Aber wenn die Funktionsnamen schon so heißen:

                            ImageCreateFromGif() (also ErstelleBildAusGifDatei()) sollte doch klar sein, dass da eine Gif-Datei rein muss. Und dass man dann mit ImageJPEG() ganz einfach eine JPEG-Datei heraus bekommt.

                            Kommentar


                            • #15
                              Danke erstmal!

                              Ich bin jetzt schon weiter gekommen. Es wird nun ein schwarzes Bild abgespeichert, leider immer noch mit .gif Bezeichnung. Die imagejpeg() Funktione benötigt den Parameter('neues bild temporär', 'Pfad zum gif bild', 'Qualität'). ?

                              PHP-Code:
                                  function _create_thumbnails($filename$dest$dest1$sizes)
                                  {
                                 
                                          
                              $filepath $dest.$filename;//./static/data/123/12324/o/1210926579_dp_bild__4.gif
                                          
                              $thumbnail imagecreatetruecolor('150','150' ); 
                                          if( 
                              strpos(strtolower($filepath),".gif") )
                                          {
                                              
                                              
                              $image imagecreatefromgif($filepath);
                                   
                                              if (!
                              $image) {
                                                  
                              $image imagecreatetruecolor (15030); 
                                                  
                              $bgc imagecolorallocate ($image255255255);
                                                  
                              $tc imagecolorallocate ($image000);
                                                  
                              imagefilledrectangle ($image0015030$bgc);
                                                  
                              imagestring($image155"Error loading $imgname"$tc);   
                                              }
                                          }    
                                          if( 
                              strpos(strtolower($filepath),".jpg") || strpos($source_file,".jpeg") ){ $image imagecreatefromjpeg($filepath); }
                                          if( 
                              strpos(strtolower($filepath),".bmp") ) { $image imagecreatefromwbmp($filepath); }
                                          if( 
                              strpos(strtolower($filepath),".png") ) { $image imagecreatefrompng($filepath); }
                                         
                                       
                                      
                                         
                              imagecopyresampled($thumbnail$image0000,  $new_width$new_height$img_width$img_height);
                                         
                              imagejpeg($thumbnail$filepath100);
                                         
                              imagedestroy($image);
                                         
                              imagedestroy($thumbnail);
                                     } 

                              Kommentar

                              Lädt...
                              X