Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem bei Image speichern in DB

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem bei Image speichern in DB

    Hallo,

    ich habe ein kleines Problem beim Speichern eines Image in eine Datenbank.

    Vorab kurz mein Code:
    PHP-Code:
    $datei=$_FILES['datei']['tmp_name'];
    $bild=addslashes(fread(fopen($datei"r"), filesize($datei)));
            
    // Create Image 
    $tmp_image imagecreatefromjpeg($bild);
          
    // Höhe und Breite des Surce Image ermitteln
    $src_width imagesx($tmp_image); 
    $src_height imagesy($tmp_image);

    // Neue Höhe und Breite ermitteln
    if ($src_width $src_height) {
      
    $width_new  '100';
      
    $new_image_height intval($src_height $width_new $src_width);
    } else {
      
    $height_new '100';
      
    $new_image_width  intval($src_width $height_new $src_height);
    }
            
    $new_image imagecreatetruecolor($new_image_width$new_image_height);
            
    imagecopyresized($new_image$tmp_image0000$new_image_width$new_image_height$src_width$src_height);

    ob_start(); 
    ob_clean();
    ImageJPEG($new_image);
    $data_img ob_get_contents(); 
    ob_end_clean(); 
    imagedestroy($new_image);
    $dbdata_img addslashes($data_img);
       
    do_sql("UPDATE info SET pict='".base64_encode($dbdata_img)."' WHERE uid='".$userid."'","user"); 
    Wenn ich $bild direkt in UPDATE info SET pict='".$bild.'" speichere (ohne scallieren) funktioniert es, habt ihr noch eine Idee wo mein Fehler liegt?

    Schon mal Danke!

  • #2
    error_reporting (und Kopf am besten auch gleich) einschalten, Meldungen posten.
    "Funktioniert nicht" ist und bleibt keine vernünftige Fehlerbeschreibung. FG ist das keinesfalls...
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Sorry hätte ich schreiben sollen, Seite wird ohne Error ausgeführt

      Kommentar


      • #4
        Zitat von McK Beitrag anzeigen
        Sorry hätte ich schreiben sollen, Seite wird ohne Error ausgeführt
        Sorry, das halte ich für ein Gerücht.

        PHP-Code:
        $datei=$_FILES['datei']['tmp_name'];
        $bild=addslashes(fread(fopen($datei"r"), filesize($datei)));
                
        // Create Image 
        $tmp_image imagecreatefromjpeg($bild); 
        Ich garantiere dir, das $tmp_image kein Resource ist... was du da einschiesst ist NICHT das, was die Funktion erwartet.
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          Darf ich aber mal fragen was das Thema im Fortgeschrittenen Forum zu suchen hat?
          Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
          [URL]http://www.lit-web.de[/URL]

          Kommentar


          • #6
            Danke für den Gedankenanstoss, manchmal sieht man den Wald vor Lauter Bäumen nicht

            hier die (fast) fertige funktion.... ist noch verbesserungsbedürftig, aber ne Hilfe für suchende

            PHP-Code:
            // funktion scaleImageFileToBlob(image, breite, höhe, schneiden0/1)

            function scaleImageFileToBlob($file$max_width$max_height$cut) {

                
            $source_pic $file;

                list(
            $src_width$src_height$image_type) = getimagesize($file);

                switch (
            $image_type)
                {
                    case 
            1$src imagecreatefromgif($file); break;
                    case 
            2$src imagecreatefromjpeg($file);  break;
                    case 
            3$src imagecreatefrompng($file); break;
                    default: return 
            '';  break;
                }

                
            // 
                
            $x_ratio $max_width $src_width;
                
            $y_ratio $max_height $src_height;

                
            // Seitenverhältnisse beibehalten
                
            if($cut == or !isset($cut)){
                    if( (
            $src_width <= $max_width) && ($src_height <= $max_height) ){
                        
            $tn_height $src_height;
                        
            $tn_width $src_width;
                    }elseif ((
            $x_ratio $src_height) < $max_height){
                        
            $tn_height ceil($x_ratio $src_height);
                        
            $tn_width $max_width;
                    }else{
                        
            $tn_height $max_height;
                        
            $tn_width ceil($y_ratio $src_width);
                    }
                    
            $left 0;
                    
            $top 0;
                    
                    
            $tmp imagecreatetruecolor($tn_width,$tn_height);
                }
                
                
            // Bild auf Absolutwerte zuschneiden, mittig Zentriert
                
            if($cut == 1){
                    if( (
            $src_width <= $max_width) && ($src_height <= $max_height) ){
                        
            $tn_height $max_height;
                        
            $tn_width $max_width;
                        
            $left 0;
                        
            $top 0;
                    }else{
                        
            // hochformat
                        
            if ($src_width $src_height){
                            
            $tn_height ceil($x_ratio*$src_height);
                            
            $tn_width $max_width;
                            
            $left 0;
                            
            $top = -(ceil($x_ratio*$src_height)-$max_height)/2;
                        }
                        
            // querformat
                        
            if ($src_width $src_height){    
                            
            $tn_height $max_height;
                            
            $tn_width ceil($y_ratio*$src_width);
                            
            $left = -(ceil($y_ratio*$src_width)-$max_width)/2;
                            
            $top 0;
                        }
                    }
                    
                    
            $tmp imagecreatetruecolor($max_width,$max_height);
                }

                
            // Prüfe ob Bild PNG oder GIF ist (transparent)
                
            if(($image_type == 1) OR ($image_type==3))
                {
                    
            imagealphablending($tmpfalse);
                    
            imagesavealpha($tmp,true);
                    
            $transparent imagecolorallocatealpha($tmp255255255127);
                    
            imagefilledrectangle($tmp00$tn_width$tn_height$transparent);
                }
                
            imagecopyresampled($tmp,$src,$left,$top,0,0,$tn_width$tn_height,$src_width,$src_height);

                
            ob_start();

                switch (
            $image_type)
                {
                    case 
            1imagegif($tmp); break;
                    case 
            2imagejpeg($tmpNULL100);  break; // best quality
                    
            case 3imagepng($tmpNULL0); break; // no compression
                    
            default: echo ''; break;
                }

                
            $final_image ob_get_contents();

                
            ob_end_clean();

                return 
            $final_image;

            EDIT:

            Auch Fortgeschrittene machen mal Anfängerfehler, trotzdem sollte man sich gegenüber freundlich bleiben und gegenseitig helfen

            Zur Funktion (für Anfänger):

            Achtung vorher $_FILES gescheit prüfen!
            PHP-Code:
            // funktion scaleImageFileToBlob(image, breite, höhe, schneiden0/1)

            $image scaleImageFileToBlob($_FILES['datei']['tmp_name'], 4203001);
            $image addslashes($image);

            // $image ganz normal in DB speichern BLOB 
            Grüße!

            Kommentar


            • #7
              Zitat von McK Beitrag anzeigen
              EDIT:

              Auch Fortgeschrittene machen mal Anfängerfehler, trotzdem sollte man sich gegenüber freundlich bleiben und gegenseitig helfen
              Natürlich, aber da dein Thread im Fortgeschrittenen Forum gepostet wurde und du dich auch als Fortgeschrittener eingestuft hast, werden von dir gewisse Voraussetzungen erwartet. Dein Fehler ist mir aufgefallen, ohne das ich deinen Code ausgeführt habe - und es wären auf jeden Fall Fehler ausgegeben worden, wäre das error_reporting gescheit eingestellt gewesen. Eine der Sachen, die von dir als Fortgeschrittener erwartet wird, ebenso wie eine brauchbare Fehlerbeschreibung...

              Geholfen wurde dir, hoffentlich nimmst du die Ratschläge auch an
              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

              Kommentar


              • #8
                Gedankenanstoss
                Is klar.

                [MOD: Thread geschlossen]
                [COLOR="#F5F5FF"]--[/COLOR]
                [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                [COLOR="#F5F5FF"]
                --[/COLOR]

                Kommentar

                Lädt...
                X