• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Bilder beim upload komprimieren?

Matze27

Mitglied
Hallo,
ich bin noch ziemlich unerfahren, in sachen php.
Würde aber gern wissen ob ich diesen code so ausbauen kann, dass beim upload die Bilder automatisch auf die richtige größe komprimiert werden und nicht nur eine Fehlermeldung ausgegeben wird.
PHP:
$count_bilder       = 0;
$bilderror          = 0;
$bild_error         = 0;
$bild_error_str     = '';
$datei1             = '';
if ($_FILES['bild1']["name"] != "") {

  if ($_FILES['bild1']["size"] <= $bild_groesse)
  {
    $ext2 = strtolower(strrchr($_FILES['bild1']["name"],'.'));
    if (in_array($ext2, $extensions2))
    {
      $datei1 = $db->insert_id().'_1'.$ext2;
      @move_uploaded_file($_FILES['bild1']["tmp_name"], $absolute_path."/".$datei1."");

      $datei1_thumb80  = $absolute_path."/".$db->insert_id()."_1_thumb80".$ext2;
      $datei1_thumb120 = $absolute_path."/".$db->insert_id()."_1_thumb120".$ext2;
      pd_make_thumb($absolute_path."/".$datei1, $datei1_thumb80, 0, 80, 80);
      pd_make_thumb($absolute_path."/".$datei1, $datei1_thumb120, 0, 120, 80);
      $count_bilder++;
    } else
    {
      if ($bild_error > 0) $bild_error_str .= ', ';
      $bild_error_str .= 'Bild 1 ist vom falschem Typ!';
      $bild_error++;
      $bilderror++;
    }

  } else
  {
    if ($bild_error > 0) $bild_error_str .= ', ';
    $bild_error_str .= 'Bild 1 ist zu groß!';
    $bild_error++;
    $bilderror++;
  }
}

Ich hoffe ihr könnt mir einen Tip geben

Gruß Matze
 
Werbung:
Zunächst mal was zur Begriffsbildung. Komprimieren bedeutet normal, die Dateigröße zu verkleinern, indem man mehr oder weniger unwichtige Informationen im Bild weglässt, die Bildgröße (LängexBreite) bleibt aber unverändert. Was du scheinbar machen willst, ist die Bildgröße ändern. Prinzipiell sollte das in etwa so gehen, wie du andeutest. Allerdings kenne ich die Funktion pd_make_thumb nicht und auch Google kennt die nicht. Also unter der Annahme, dass die das tut, was der Name so suggeriert, dann stimmt der grobe Ablauf, das Errorhandling ist sicher nicht ausgereift :-).

Tip: Versuch erst mal das einfache, nämlich ein Bild ohne Verkleinern hochzuladen und den Einttrag in der DB zu machen und fang dabei Fehler ab wie doppelte Bildnamen oder ähnliches.
 
Hallo,
danke für deine Antwort.
Das mit der Bildgröße klappt eigentlich ziemlich gut.
Jetzt möcht ich, wie du das schon angedeutet hast die Dateigröße ändern ( Benutzer will Bild mit einer Größe von 200kb hochladen --> Bild wird automatisch auf eine größe von 60kb komprimiert).
Im Moment gibt mein script, nur eine Fehlermeldung aus.
Gruß Matze
 
Werbung:
Es macht wenig Sinn, hier massig Code anzugeben, der dann schon geht und den Teil, der nicht geht, außen vor zu lassen. Warum lieferst nicht nur die den Fehler erzeugende Codezeile (die sagt die PHP ja) und die Fehlermeldung? Davon abgesehen halte ich persönlich nichts von auto-kompressionen, denn wenn der Benutzer das Bild mittels einer schon relativ hohen Komprimierung einliefert und du diese nochmals auf nur 30% bringst, dann kannst davon ausgehen, dass möglicherweise die Qualität unter aller Sau sein wird und keiner deinen Dienst nutzen will
 
Hallo,
das war ja mein anliegen. Den passenden Code habe ich noch gar nicht geschrieben, da ich keinen Ansatz habe, wie ich das am besten umsetzen kann.
Der Code oben liefert mir nur eine Fehlermeldung, dass das Bild zu groß ist. Wie könnte ich den Code so umschreiben oder erweitern, dass das Bild automatisch auf die vorgegebenen Dateigröße verkleinert wird.
Gruß Matze
 
Werbung:
Zurück
Oben