ImageCreateFromJpeg / ImageCopyResized / ob_get_contents

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

  • ImageCreateFromJpeg / ImageCopyResized / ob_get_contents

    hi @ all

    jetzt habe ICH mal wieder ein problem.

    die beigefügte fkt speichert mir ein bild in der DB ab.
    soweit ist auch alles in ordnung.

    jetzt habe ich aber eine änderung begefügt, dass ein bild,
    welches > 390 pixel breit und vom typ JPEG ist, automatisch
    auf 390er breite verkleinert wird.

    das verkleinern klappt auch, wenn man es direkt ausgibt. da
    ich die verkleinerten daten natürlich auch wieder in die DB
    schreiben will, habe ich mit ob_*() gearbeitet.

    aber irgendwie sind in $data wohl keine richtigen imagedaten
    mehr enthalten.

    kann mit jemand einen tipp geben?

    danke


    PHP-Code:

      
    function GemBrAdminSaveInhaltImage($pageid,$TypeId,$ImageData,$Image) {
        if (
    is_uploaded_file($ImageData["tmp_name"])) {
          
    $file_name $ImageData["name"];
          
    $file_size $ImageData["size"];
          
    $file_type $ImageData["type"];
          
    $data addslashes(fread(fopen($ImageData["tmp_name"], "r"), $ImageData["size"]));

          
    $imagehw GetImageSize($ImageData["tmp_name"]);
          
    $ImageWidth $imagehw[0];
          
    $ImageHeight $imagehw[1];

          if (
    ereg("image/(pjpeg|jpeg)",$file_type) && $ImageWidth 390) {

            
    $verhaeltnis  $ImageWidth 390;
            
    $ImageWidth   390;
            
    $ImageHeight  round ($ImageHeight $verhaeltnis);

            
    $src_img ImageCreateFromJpeg($ImageData["tmp_name"]);
            
    $dst_img ImageCreate($ImageWidth,$ImageHeight);

            
    ImageCopyResized$dst_img$src_img0000$ImageWidth$ImageHeightImageSX($src_img), ImageSY($src_img) );

            
    // save output to a buffer
            
    ob_start();
            
    ImageJPeg($dst_img''60);
            
    $data ob_get_contents(); // <<<------ HIER MUSS WAS SEIN ???
            
    ob_end_clean();
            
    // $data = addslashes($data); // nur test gewesen
            
    $file_size "123";

          }
          else {
            
    $data addslashes(fread(fopen($ImageData["tmp_name"], "r"), $ImageData["size"]));
          }




          
    $result mysql_query "INSERT INTO GemBr_Content ( NaviId, TypId ) VALUES ('".$pageid."', '".$TypeId."' )" );
          
    $result mysql_query "INSERT INTO GemBr_Content_Image".
                                  
    "   ( ContentId, ImageFile, ImageDesc,".
                                  
    "     ImageData, ImageFileType, ImageFileSize,".
                                  
    "     ImageWidth ,ImageHeight, ImageBorder,".
                                  
    "     ImageAlign, ImageAlt ) VALUES ".
                                  
    "   ('".mysql_insert_id()."','".$file_name."', '".$Image[desc]."',".
                                  
    "    '".$data."', '".$file_type."', '".$file_size."',".
                                  
    "    '".$ImageWidth."', '".$ImageHeight."', '".$Image[border]."',".
                                  
    "    '".$Image[align]."', '".$Image[alt]."')" );
        }
      } 
    Zuletzt geändert von Abraxax; 27.12.2002, 18:46.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |



  • #2
    ich habe jetzt selber eine lösung gemacht...

    damit klappt es. nach dem resizen überschreibe ich einfach das original und fange so an, als wäre die datei gerade erst hochgeladen. hole mir also den inhalt noch einmal neu und ermittel die aktulle dateigröße.

    vielleicht kanns jemand gebrauchen ...


    PHP-Code:
    .
    .
    .

            
    ImageCopyResized$dst_img$src_img0000$ImageWidth$ImageHeightImageSX($src_img), ImageSY($src_img) );

            
    ImageJPeg($dst_img$ImageData["tmp_name"], 60);
            
    $file_size filesize($ImageData["tmp_name"]);
            
    $data addslashes(fread(fopen($ImageData["tmp_name"], "r"), $file_size));

    .
    .

    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar

    Lädt...
    X