kostenloser Webspace werbefrei: lima-city


PHP Image resize

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    simter

    simter hat kostenlosen Webspace.

    Hallo

    Wie kann ich auf Lima-City ein Bild mit PHP resizen? Beispiele die ich gefunden habe, benutzen GD Library. Wird hier eine Alternative unterstützt? Oder gibt es sogar Code, der ohne zusätzliche Library funktioniert? Diese selbst installieren kann ich nicht, oder?

    Falls GD sogar schon auf Lima unterstützt wird, funktioniert mein Code nicht. Ich würde gerne ein Bild zuerst auf eine bestimmte Breite resizen und dann uploaden.

    Gruss

    Beitrag zuletzt geändert: 11.1.2017 18:03:06 von simter
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. matthias-detsch

    Kostenloser Webspace von matthias-detsch

    matthias-detsch hat kostenlosen Webspace.

    Ich hatte mal was ähnliches gebaut, das Bild wurde dabei verkleinert, genauer gesagt auf die feste Höhe von 50.
    $guid wurde dabei nur verwendet, um einen eindeutigen Dateinamen zu erzeugen.
    Wenn du alles selber bauen willst, ist hier der Link zu der funktion, die du hauptsächlich haben willst *klick*

    ansonsten ist hier der Teil von damals (~3 Jahre alt, obes noch geht weiß ich nicht)

    $original_img_path = '/Galerie/original/';
    	    $mini_img_path = '/Galerie/img_mini/';   
          $error = "";
     
          for($i=0; $i<count($_FILES["img_file"]["name"]);$i++){
            if ($_FILES["img_file"]["type"][$i] == "image/jpeg" or $_FILES["img_file"]["type"][$i] == "image/png" or $_FILES["img_file"]["type"][$i] == "image/gif") {
              $guid = getGUID();
              $new_org_file = $_SERVER['DOCUMENT_ROOT'].$original_img_path.$guid.strrchr($_FILES["img_file"]["name"][$i],".");
              $new_mini_file = $_SERVER['DOCUMENT_ROOT'].$mini_img_path.$guid.strrchr($_FILES["img_file"]["name"][$i],".");
     
              move_uploaded_file($_FILES['img_file']['tmp_name'][$i], $new_org_file);
     
              list($width_org, $height_org) = getimagesize($new_org_file);
     
              switch ($_FILES["img_file"]["type"][$i]) {
                case "image/jpeg":
                  $image_org = imagecreatefromjpeg($new_org_file);                
                  break;
                case "image/png":
                  $image_org = imagecreatefrompng($new_org_file);
                  break;
                case "image/gif":
                  $image_org = imagecreatefromgif($new_org_file);
                  break;
              }
     
              $image_new = imagecreatetruecolor((50*$width_org)/$height_org,50);
              imagecopyresampled($image_new, $image_org, 0, 0, 0, 0, (50*$width_org)/$height_org, 50, $width_org, $height_org);
     
              switch ($_FILES["img_file"]["type"][$i]) {
                case "image/jpeg":
                  imagejpeg($image_new,$new_mini_file,100);                
                  break;
                case "image/png":
                  imagepng($image_new,$new_mini_file,0);
                  break;
                case "image/gif":
                  imagegif($image_new,$new_mini_file);
                  break;
              }
     
              imagedestroy($image_org);
              imagedestroy($image_new);
            } else {
              $error .= "Dateiformat nicht unterst&uuml;tzt. (".$_FILES['img_file']['name'][$i].")<br/>";
            }
          }
  4. Gemäss phpinfo wird die gd-Library von LC unterstützt. Du kannst ja mal deinen Code posten, vielleicht findet jemand den Fehler.
  5. Autor dieses Themas

    simter

    simter hat kostenlosen Webspace.

    Hallo avweb

    avweb schrieb:
    Gemäss phpinfo wird die gd-Library von LC unterstützt. Du kannst ja mal deinen Code posten, vielleicht findet jemand den Fehler.
    $w = 500;
    $h = 500;
    
    $orig_w = imagesx($_FILES["fileToUpload"]["tmp_name"]);
    $orig_h = imagesy($_FILES["fileToUpload"]["tmp_name"]);
    
    $w_ratio = $orig_w / $w;
    $h_ratio = $orig_h / $h;
    
    $ratio = $w_ratio > $h_ratio ? $w_ratio : $h_ratio;
    
    $dst_w = $orig_w / $ratio;
    $dst_h = $orig_h / $ratio;
    $dst_x = ($w - $dst_w) / 2;
    $dst_y = ($h - $dst_h) / 2;
    
    $thumbnail = imagecreatetruecolor($w, $h);
    imagecopyresampled($thumbnail, $_FILES["fileToUpload"]["tmp_name"], $dst_x, $dst_y,0, 0, $dst_w, $dst_h, $orig_w, $orig_h);
    Und die Variable
    $thumbnail
    benutze ich dann in der Funktion
    move_uploaded_file()
    anstatt
    $_FILES["fileToUpload"]["tmp_name"]

    Der Upload selbst funktioniert einwandfrei.


    matthias-detsch schrieb:
    Ich hatte mal was ähnliches gebaut, das Bild wurde dabei verkleinert, genauer gesagt auf die feste Höhe von 50.
    Vielen Dank! Schau ich mir an, wenn aus meinem Code nichts wird.
  6. Hallo,

    ich habe mal etwas getestet und habe einige Fehler(?) bzw. Unklarheiten gefunden:

    1. als Erstes schalte in deinem PHP-Code am besten die Fehlermeldungen ein, damit dir diese wirklich vollständig angezeigt werden:
    error_reporting (E_ALL | E_STRICT);  
    ini_set ('display_errors', 'On');


    2. Die Funktionen imagesx() und imagesy() scheinen andere Datentypen zu erwarten (resource), als du Ihnen übergibst (string).

    3. Damit die umgewandelte Datei auch tatsächlich wieder gespeichert wird, benötigst du ganz am Schluss eine Funktion wie z.B. imagejpeg(). Die habe ich in deinem Code nirgends gefunden. (imagecopyresampled() alleine speichert keine Datei.)

    Letztendlich hat bei mir dieser Code tiptop funktioniert:
    error_reporting (E_ALL | E_STRICT);  
    ini_set ('display_errors', 'On');  
    
    $dest_path = './test.jpg';
    move_uploaded_file ( $_FILES["fileToUpload"]["tmp_name"] , $dest_path );
    
    $w = 500;
    $h = 500;
     
    $orig_w = imagesx(imagecreatefromjpeg($dest_path));
    $orig_h = imagesy(imagecreatefromjpeg($dest_path));
     
    $w_ratio = $orig_w / $w;
    $h_ratio = $orig_h / $h;
     
    $ratio = $w_ratio > $h_ratio ? $w_ratio : $h_ratio;
     
    $dst_w = $orig_w / $ratio;
    $dst_h = $orig_h / $ratio;
    $dst_x = ($w - $dst_w) / 2;
    $dst_y = ($h - $dst_h) / 2;
     
    $thumbnail = imagecreatetruecolor($w, $h);
    //imagecopyresampled($thumbnail, imagecreatefromjpeg($_FILES["fileToUpload"]["tmp_name"]), $dst_x, $dst_y,0, 0, $dst_w, $dst_h, $orig_w, $orig_h);
    imagecopyresampled($thumbnail, imagecreatefromjpeg($dest_path), $dst_x, $dst_y,0, 0, $dst_w, $dst_h, $orig_w, $orig_h);
    imagejpeg($thumbnail, $dest_path);


    Die ersten beiden Zeilen dienen nur dem Debuggung und sind natürlich wieder zu entfernen, sobald das Script korrekt läuft.
    Du hast zudem erwähnt, dass du move_uploaded_file() bereits anwendest, falls das so ist, kannst du an dieser Stelle die Zeile natürlich auch löschen. Ebendo den $dest_path, falls diese Variable bereits anderswo definiert ist.
    Als letztes ist zu erwähnen, dass ich hier konsequent von JPEG-Dateien ausgegangen bin. Bei anderen Formaten sind natürlich die entsprechenden Funktionen (imagecreatefromjpeg() und imagejpeg()) auszutauschen.
  7. Autor dieses Themas

    simter

    simter hat kostenlosen Webspace.

    Hallo avweb
    avweb schrieb:
    1. als Erstes schalte in deinem PHP-Code am besten die Fehlermeldungen ein, damit dir diese wirklich vollständig angezeigt werden
    Vielen Dank für deine Hilfe! Mit deinem Script und vorallem mit deinem Tip, auch die Warnungen einzuschalten, konnte ich mein Script debuggen. Ich habe deines nicht 1:1 übernommen, denn ich möchte das Bild vor dem uploaden zuschneiden, aber trotzdem hat es mich auf den richtigen Weg geführt. Funktioniert jetzt alles.

    Danke und Gruss
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!