ImageCreateFromJpeg / ImageCopyResized / ob_get_contents

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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]."')" );
        }
      } 
    Last edited by 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 |


    Comment

    Working...
    X