Bilddaten aus ImagePNG($img) auslesen?

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

  • Bilddaten aus ImagePNG($img) auslesen?

    hallo..
    gerne würde ich ein Bild erstellen. Dies jedoch nicht speichern, sondern direkt in eine mysql db geschrieben werden..
    kann mir hierbei bitte jemand helfen? bzw. geht das überhaupt?
    wichtig..ich nutzte eine php version 4.1.2. und würde ungerne wechseln..
    PHP-Code:
    $width 400;  
    $height 20;  
    $img ImageCreate($width$height);  

    $gelb ImageColorAllocate($img23517542); 
    $white ImageColorAllocate($img255255255);  

    ImageFill($img00$gelb);  
    ImageString($img251'Hallo Welt '$white); 
    //ImagePNG($img, "ex12345.png"); 

    ImagePNG($img);  

    //ob_start(); 
    //imagepng($img); 
    //$image_data = ob_get_contents(); 
    //ob_end_clean(); 

    // hier hänge ich irgendwie !!! 
    $data addslashes(fread(fopen($form_data"r"), filesize($form_data))); 
    //('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')"); 

    ImageDestroy($img); 

  • #2
    also afaik kannst du bilder nur entweder an den browser senden oder als datei speichern.

    wie wärs also mit:
    PHP-Code:
    $tmpfile tmpnam(sys_get_temp_dir(),'img');
    imagepng($img$tmpfile);
    $blob file_get_contents($tmpfile);
    unlink($tmpfile); 
    [edit]
    argh das 4.1.2 übersehn.. da gabs file_get_contents noch gar nich..
    also von den userpages:
    PHP-Code:
    <?PHP
    //PHP 4.2.x Compatibility function
    if (!function_exists('file_get_contents')) {
          function 
    file_get_contents($filename$incpath false$resource_context null)
          {
              if (
    false === $fh fopen($filename'rb'$incpath)) {
                  
    trigger_error('file_get_contents() failed to open stream: No such file or directory'E_USER_WARNING);
                  return 
    false;
              }
     
              
    clearstatcache();
              if (
    $fsize = @filesize($filename)) {
                  
    $data fread($fh$fsize);
              } else {
                  
    $data '';
                  while (!
    feof($fh)) {
                      
    $data .= fread($fh8192);
                  }
              }
     
              
    fclose($fh);
              return 
    $data;
          }
      }
    ?>
    Zuletzt geändert von frodenius; 24.04.2008, 20:58.
    blllubb

    Kommentar


    • #3
      ob_start()

      Kommentar


      • #4
        @onemorenerd
        ob_start() habe ich bereits..nur wie gehts weiter?

        @frodenius
        danke für die idee mit den tmpfile nur ist das ein unsicherheits faktor..?

        das wäre so schön direkt die datei zu übernehmen .. oder hab ich mir zuviel zugetraut..?

        Kommentar


        • #5
          http://de3.php.net/manual/de/functio...t-contents.php
          http://de3.php.net/manual/de/function.ob-end-clean.php

          Kommentar


          • #6
            Du könntest auch einen eigenen Dateistream registrieren. Im Manual gibt es Beispiele dazu, auch für einen einfachen Wrapper, der die Daten in einer globalen Variable ablegt.

            Kommentar


            • #7
              habs
              relativ simpel..
              PHP-Code:
              ob_start();
              imagepng($img);  
              $out1 ob_get_contents();
              ob_end_clean();
              $out2 mysql_real_escape_string($out1); // ->entweder mit addlashes oder mit mysql_real_escape_string je nach php version..
              $out2 addslashes($out1); 
              gruss
              arne

              Kommentar


              • #8
                entweder mit addlashes oder mit mysql_real_escape_string je nach php version..
                Was ist das denn??

                Kommentar


                • #9
                  mysql_real_escape_string() gibt es seit PHP 4.3.0, die MySQL Extension selbst seit PHP 4. Für die Versionen dazwischen mag addslashes() vielleicht sogar angebracht sein. Aber wer eine so alte Version benutzt - PHP 4.3 ist 6 Jahre alt - sollte lieber mal updaten bzw. den Provider wechseln.

                  Ich bezweifle übrigens, dass areuter das alles im Sinn hatte. Vermutlich hat er ein uraltes oder schlechtes Tutorial gelesen oder schlicht nicht verstanden was genau mysql_real_escape_string() macht. Deshalb für alle späteren Leser noch mal deutlich:

                  addslashes() maskiert single quotes ('), double quotes ("), backslashes (\) und NUL (\x00).
                  mysql_real_escape_string() maskiert zusätzlich newline (\n) carriage return (\r), und Control-Z (\x1a), wobei das Charset der aktuellen Verbindung berücksichtigt wird.

                  mysql_real_escape_string() leistet also mehr und das aus gutem Grund!

                  Kommentar


                  • #10
                    Ah, gut zu wissen, das war noch vor meiner Anfangszeit mit PHP ^^ Eine so alte Version sollte aber wirklich nicht mehr verwendet werden. Selbst jetzt noch Software für Version 4 zu entwickeln halte ich für Schwachsinn (ich will jetzt keine Diskussion auslösen ).

                    Kommentar

                    Lädt...
                    X