Ankündigung

Einklappen
Keine Ankündigung bisher.

imagecopymerge schneidet mir nur die originalgr�sse aus. :

Einklappen

Neue Werbung 2019

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

  • imagecopymerge schneidet mir nur die originalgr�sse aus. :

    ich habe mir folgendes script gemacht um bilder upzuloaden und thumbs zu erstellen.
    die thumbs haben immer die breite von 126px. wenn das bild BREITER ALS HOCH ist dann ist das auch ok so.
    dann wird die h�he einfach angepasst. das funktioniert auch pr�chtig.

    wenn das bild aber H�HER ALS BREIT ist, dann wollte ich aus dem originalen bild einfach aus der vertikalen mitte
    50px nach oben und 50px nach unten ausschneiden. das mit der vertikalen mitte haut auch super hin, nur bei der
    breite hab ich einen fehler drin. er beh�lt hier die originalgr�sse bei.
    sprich er verkleinert die originalbreite nicht auf die thumb_breite.

    ihr k�nnt das auch gern ausprobieren: http://www.msgu.at/test/test.php

    wo hab ich denn da den fehler drin?

    PHP-Code:
    <?php
    $absolute_path 
    'C:/Programme/xampp/htdocs/projects/test/bilder/'// absoluter filepfad
    $http_path 'http://localhost/projects/test/bilder/'// http pfad

    if(isset($_POST['submit']) && !empty($_FILES['picture']['name']) && $_FILES['picture']['type'] === 'image/jpeg') {

      
    $img_orig $_FILES['picture']['name'];
      
    $img_tmp $_FILES['picture']['tmp_name'];
      if(!
    move_uploaded_file($img_tmp$absolute_path.$img_orig)) {
        echo 
    'Es trat ein Fehler auf!

    '
    ;
        exit;
      }

      
    chmod($absolute_path.$img_orig0777);

    // masse berechnen
      
    $size getimagesize($absolute_path.$img_orig);
      
    $orig_width $size[0];
      
    $orig_height $size[1];
      
    $thumb_width 126// h�lfte: 63
      
    $thumb_height 94// h�lfte: 47
      
    $img_thumb_name 'thumb_'.$img_orig;

      if(
    $orig_width $thumb_width) {
        
    $thumb_width $orig_width;
      }

    // schauen ob das picture h�her als breit ist  
      
    if($orig_height $orig_width) {
      
    // picture erstellen und ausschnitt von original kopieren
      
    $src_y = ($orig_height/2) + ($thumb_height/2);
      
    $source imagecreatefromjpeg($absolute_path.$img_orig);
      
    $destination imagecreatetruecolor($thumb_width,$thumb_height);
      
    imagecopymerge($destination$source000$src_y$orig_width$orig_height'100');
    // imagecopymerge(res. dst_im, res. src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)
      
    imagejpeg($destination$absolute_path.$img_thumb_name);
      
    imagedestroy($source);
      
    imagedestroy($destination);
      
    chmod($absolute_path.$img_thumb_name0777);

      } else {

        
    $scalefactor $orig_width/$thumb_width;
        
    $thumb_height intval($orig_height/$scalefactor);

    // picture erstellen und von original kopieren  
        
    $source imagecreatefromjpeg($absolute_path.$img_orig);
        
    $destination imagecreatetruecolor($thumb_width,$thumb_height);
        
    imagecopyresized($destination$source0000$thumb_width$thumb_height$orig_width$orig_height);
    //  imagecopyresized(res. dst_im, res. src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)
        
    imagejpeg($destination$absolute_path.$img_thumb_name);
        
    imagedestroy($source);
        
    imagedestroy($destination);
        
    chmod($absolute_path.$img_thumb_name0777);
      
      }
      
        echo 
    '[img]'.$http_path.$img_thumb_name.'[/img]

    '
    ;
        echo 
    '[url="test.php"]Zur�ck[/url]';
        
    } else {
    ?>
    <form enctype="multipart/form-data" action="<? echo 'test.php'; ?>" method="post">
      <input name="picture" type="file">

      <input type="submit" name="submit" value="Upload">
    </form>
    <?php
    }
    ?>
    mfg Alex

  • #2
    Hmmmmmm, schonmal an 'image/pjpeg' gedacht ?

    Der IE macht das leider so ...

    Kommentar


    • #3
      ähm.... sagt mir jetzt gar nix. was kann ich mit dem anfangen?

      ich hab gedacht ich hätte den fehler gefunden. nämlich muss ich vor dem imagecopymerge noch ZUSÄTZLICH imagecopyresized machen oder? damit ich mal das originale bild geschrumpft hab, dann noch ein image erstellen und dann hier das mergen lassen.

      oder seh ich das falsch?
      mfg Alex

      Kommentar


      • #4
        schonmal an 'image/pjpeg' gedacht ?
        Zunächst muss ich mal erwähnen, dass es nicht unbedingt zum Thema gehört.
        Nun wenn man mit dem IE ein Bild-Upload mit JPG-Bilder macht, sendet der IE als Type »image/pjpeg«.
        Wird dies nicht mit abgfragt, geht der Upload mit IE leider garnicht.

        Hatte es dann mit FF probiert, da klappte das auch.
        Musst also deine Abfrage nach $_FILES['picture']['type'] === 'image/jpeg') etwas erweitern

        Dein anderes Problem konnte ich bisher nicht nachvollziehen.
        Willst du ein Bild verkleinern oder ausschneiden, oder alles beides ?
        Keine Ahnung, hab mir hier nicht alles durchgelesen.

        Kommentar


        • #5
          achsooooooo. danke. war ein guter tipp

          hab meinen code jetzt so dass er funktioniert. *freu* oder gibts noch verbesserungsvorschläge?

          er schneidet mir bei bilder die h�her als breit sind aus der mitte einen definierte bereich aus:

          PHP-Code:
          <?php
          <?php
          //$absolute_path = '/home/msgu.at/www.msgu.at/test/bilder/'; // absoluter filepfad
          //$http_path = 'http://www.msgu.at/test/bilder/'; // http pfad

          $absolute_path 'C:/Programme/xampp/htdocs/projects/test/bilder/'// absoluter filepfad
          $http_path 'http://localhost/projects/test/bilder/'// http pfad

          if(isset($_POST['submit']) && !empty($_FILES['picture']['name']) && $_FILES['picture']['type'] === 'image/jpeg' || $_FILES['picture']['type'] === 'image/pjpeg') {

            
          $img_orig $_FILES['picture']['name'];
            
          $img_tmp $_FILES['picture']['tmp_name'];
            if(!
          move_uploaded_file($img_tmp$absolute_path.$img_orig)) {
              echo 
          'Es trat ein Fehler auf!

          '
          ;
              exit;
            }

            
          chmod($absolute_path.$img_orig0777);

          // masse berechnen
            
          $size getimagesize($absolute_path.$img_orig);
            
          $orig_width $size[0];
            
          $orig_height $size[1];
            
          $thumb_width 126// h�lfte: 63
            
          $thumb_height 94// h�lfte: 47
            
          $img_thumb_name 'thumb_'.$img_orig;

            if(
          $orig_width $thumb_width) {
              
          $thumb_width $orig_width;
            }

          // schauen ob das picture h�her als breit ist
            
          if($orig_height $orig_width) {

              
          $scalefactor $orig_width/$thumb_width;
              
          $thumb_height1 intval($orig_height/$scalefactor);

          // picture erstellen und ausschnitt von original kopieren
              
          $src_y = ($thumb_height1/2) - ($thumb_height/2);
              
          $source imagecreatefromjpeg($absolute_path.$img_orig);
              
          $destination imagecreatetruecolor($thumb_width,$thumb_height1);
              
          imagecopyresized($destination$source0000$thumb_width$thumb_height1$orig_width$orig_height);
              
          $finaldestination imagecreatetruecolor($thumb_width,$thumb_height);
              
          imagecopymerge($finaldestination$destination000$src_y$thumb_width$thumb_height'100');
              
          imagejpeg($finaldestination$absolute_path.$img_thumb_name);
              
          imagedestroy($source);
              
          imagedestroy($destination);
              
          imagedestroy($finaldestination);
              
          chmod($absolute_path.$img_thumb_name0777);

            } else {

              
          $scalefactor $orig_width/$thumb_width;
              
          $thumb_height intval($orig_height/$scalefactor);

          // picture erstellen und von original kopieren
              
          $source imagecreatefromjpeg($absolute_path.$img_orig);
              
          $destination imagecreatetruecolor($thumb_width,$thumb_height);
              
          imagecopyresized($destination$source0000$thumb_width$thumb_height$orig_width$orig_height);
          //  imagecopyresized(res. dst_im, res. src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)
              
          imagejpeg($destination$absolute_path.$img_thumb_name);
              
          imagedestroy($source);
              
          imagedestroy($destination);
              
          chmod($absolute_path.$img_thumb_name0777);

            }

              echo 
          '[img]'.$http_path.$img_thumb_name.'[/img]

          '
          ;
              echo 
          '[url="test.php"]Zur�ck[/url]';

          } else {
          ?>
          <form enctype="multipart/form-data" action="<? echo 'test.php'; ?>" method="post">
            <input name="picture" type="file">

            <input type="submit" name="submit" value="Upload">
          </form>
          <?php
          }
          ?>
          ?>
          mfg Alex

          Kommentar

          Lädt...
          X