Ankündigung

Einklappen
Keine Ankündigung bisher.

Bilder Upload und automatische thumbnails erstellen

Einklappen

Neue Werbung 2019

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

  • Bilder Upload und automatische thumbnails erstellen

    Hallo,

    also ich bin auch noch ein PHP Frischling. Ich habe mir ersteinmal die Grundkenntnisse per Fachbuch angeignet und habe einige freie Scripts mal versucht zu verstehen und anzupassen. Klappt soweit ganz gut nur finde ich weder ein freies Script oder schaffe es selber ein funktionsfähiges zu erstellen. Vielleicht könnt Ihr mir helfen.

    Ich möchte ein Bild in ein Verzeichnis Uploaden, dabei soll automatsich in einem festen Unterverzeichniss ein thumbnail erstellt werden. Schön wäre es auch wenn man die thumbnails in einer Liste anzeigen kann, um auch Bilder zu löschen. Das war es auch schon. Leider sind alle Scripts die ich gefunden habe um einiges umfangreicher, was ich gar nicht benötige. Meisten sind es Photoalben, die brauche ich aber nicht. Man muss dem Bild beim Hochladen auch ein Namen geben könnene, da ich diesen Namen später noch brauche um einen Pfad zum Bild zu generieren.

    Das Script RC_Uploader ist schon fast Ideal, kann aber keine Thumbnail erstellen. Ich habe versucht diese funktion hinzuzufügen, klappt jedoch nicht.

    Nun mein Aufruf, wer kann mir helfen das zu verwriklichen oder hat sogar schon so ein fertiges Script.

    Gruß Christian


  • #2
    Hier findest Du ein paar Thumbnail Scripts
    http://entwickler.com/itr/psecom,id,...ack&dp=&wm=wrd

    GU
    Peter

    Kommentar


    • #3
      Danke für den Link

      Danke für den Link, ich habe die Scripte gleich getestet. Der SimpleViewerAdmin scheint genau das zu können was ich möchte. Er ist natürlich viel zu umfangreich, ich könnte ja die Eingabe Felder einfach ausblenden, da ich ja eigentlich nur das Upload benötige. Jedoch kann dieses Script nicht den Dateinamen ändern.
      Mein Traum wären:

      FileUplad Feld
      Umbennen Feld

      Dann wird das Bild automatisch hochgeladen umbenannt und in einem Unterordner als gleichnamiges Thumbnail gespeichert.
      Schön wäre es noch wenn es eine Bestätigungsmeldung geben würde oder eine Fehlermeldung Datei mit dem Namen existiert schon.

      Mehr funktionenen brauche ich eigentlich nicht. Selbst auf die Admin konsole kann ich verzichten, bzw. es würde mir reichen die Thumbnail aufgelistet zubekommen mit der funktion delete.

      Ist das so ungewöhnlich?

      Kommentar


      • #4
        thumbnails erstellen? Dann guck mal beim Forum tutorial rein :wink:
        Aufstrebend, kompetent und werbefrei.
        www.developers-guide.net

        Kommentar


        • #5
          oder check:

          http://www.phpfriend.de/ftopic17706.html
          oder
          http://www.codeschnipsel.net

          Kommentar


          • #6
            Danke für Eure Tipps, nun aber...

            Danke für Eure Tipps, nun aber bin ich auf den verschiedene Seiten mehr oder weniger fündig geworde und habe mir aus mehren Sripts ein funktionsfähiges zusammengestellt und angepaßt. Ich kann jetzt jpg Bilder uploaden und es wird automatisch ein gleichnamiger Thumbnail in einem anderen Pfad gespeichert.

            Nun versuche ich schon den genzen Tag das rename hinzubekommen, leider ohner Erfolg. Ich benötige ein weiteres Eingabefeld in den ich eine Namen eingeben kann, so das die Datei vor dem Upload schom temporär umbenannt wird und automatisch auch die Endung jpg erhält ohne das man sie eingeben muss. Diese Eingabe Feld für den Dateinamen soll ein Pflichtfeldsein, sonst Fehlermeldung.
            Und wie kann ich den eingegeben Namen an eine andere PHP Datei übergeben. Da ich den Upload in einem POPUP starten will und der dann eingegebene Name in dem vorherigen Formular übergeben werden soll, in dem man dann die restlichen Daten eingibt und es dann absendet.

            Die Bilder will ich später als Pfad <img....> zu dem jeweiligen Datensatz anzeige lassen, dies Just for Info.

            Hier mein Upload Code:

            Code:
            <?php
            
               // Absoluter Pfad zum Ordner in den die Datei hochgeladen werden soll.
               $pfad = "pictures";
            
               // Soll eine maximale Größe der Datei festgelegt werden ?
               $sizeabfrage = "yes";
            
               // Maximale Größe der Datei (Falls $sizeabfrage = "yes" ist)
               $filesize = "60000";
            
               // Soll die maximale Größe auch angezeigt werden ?
               $sizeanzeige = "no";
            
               // Was für Dateitypen sollen erlaubt sein ?
               $extend = "jpg|jpeg";
            
               // Sollen die erlaubten Dateitypen angezeigt werden ?
               $extendanzeige = "no";
            
               // Layout
               $body = "<body bgcolor=#E2E0E5 text=#000000 link=#FF0000 alink=#FF0000 vlink=#FF0000>";
               $font = "<font face=verdana size=2>";
            ?>
            
            
            <?php
               echo "$body";
               echo "$font";
            ?>
            
            <div align="center">
            
            <?php
            
               $fehler = FALSE;
            
               if ($senden) {
                  if ($file_name == "") {
                     echo "
            <font color=#FF0000>Es wurde kein Bild ausgewaehlt!</font>";
                     $fehler = TRUE;
                  }
            
                  if (!$fehler)
                  if (file_exists("$pfad/$file_name")) {
                     echo "
            <font color=#FF0000>Bildname schon vorhanden!</font>";
                     $fehler = TRUE;
                  }
            
                  if (!$fehler)
                  if ($sizeabfrage == "yes") {
                     if ($file_size > $filesize) {
                        echo "
            <font color=#FF0000>Das Bild ist zu groß (max. 50kb)!</font>";
                        $fehler = TRUE;
                     }
                  }
            
                  if (!$fehler)
                  if (!eregi("($extend)$", $file_name)) {
                     echo "
            <font color=#FF0000>Dieser Dateityp ist nicht erlaubt!</font>";
                     $fehler = TRUE;
                  }
            
                  if (!$fehler) {
                     if (copy($file, $pfad."/".$file_name)) {
                        echo "
            <font color=#00FF00>Bild hochgeladen</font>
            ";
                        $fehler = FALSE;
                     }
                     else {
                        echo "
            <font color=#FF0000>Bild nicht hochgeladen</font>";
                        $fehler = TRUE;
                     }
            
                  }
               }
            
               if ($fehler || !$senden) {
            
            ?>
            
            <table align="center">
            
            <form action="<?php $PHP_SELF; ?>" method="post" enctype="multipart/form-data">
            
            
            Bitte Datei auswaehlen:
            
            
            <?
               if ($sizeanzeige == "yes") {
                  echo ("Maximale Größe: ".$filesize." Byte");
               }
            ?>
            
            
            <?
               if ($extendanzeige == "yes") {
                  echo ("Erlaubte Dateitypen: ".$extend);
               }
            ?>
            
            
            
            <input type="file" size="30" name="file">
            
            
            <input type="Submit" name="senden" value="hochladen">
            
            </form>
            
            </table>
            
            <?
            }
            ?>
            
            
            <?php
            
            // Vergleichen und Thumbs erstellen
            
            
            //  Name des Ordners, in dem die Originale sind:
              $folder_scr  = "pictures";
            
            //  Name des Ordners, in den die Thumbs sollen:
              $des_src     = "thumbs";
            
            //  Max. Ausdehnung der thumb-Datei in x-Richtung
              $thumbx      = "100";
            
            //  Max. Ausdehnung der thumb-Datei in y-Richtung
              $thumby      = "100";
            
              function mkthumb($img_src,     // Dateiname
                               $img_width,   // max. Größe in x-Richtung
                               $img_height,  // max. Größe in y-Richtung
                               $folder_scr,  // Ordner der normalen Bilder
                               $des_src)     // Ordner der Thumbs
              {
                $image = imagecreatefromjpeg($folder_scr."/".$img_src);
                list($src_width, $src_height) = getimagesize($folder_scr."/".$img_src);
                if($src_width >= $src_height)
                {
                  $new_image_width = $img_width;
                  $new_image_height = $src_height * $img_width / $src_width;
                }
                if($src_width < $src_height)
                {
                  $new_image_height = $img_width;
                  $new_image_width = $src_width * $img_height / $src_height;
                }
                $new_image = imagecreatetruecolor($new_image_width, $new_image_height);
                imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_image_width,$new_image_height, $src_width, $src_height);
                imagejpeg($new_image, $des_src."/".$img_src, 100);
              }
            
            
            
              // Name dieser PHP-Datei
              $filename = $_SERVER['PHP_SELF'];
            
              // Verzeichnis wird geöffnet
              $verz=opendir($folder_scr);
            
              // Ein Array wird erstellt in dem nachher die Dateien gespeichert werden
              $linkl = array ();
            
              while ($file = readdir ($verz))
              {
                // Mit jeder Datei wird etwas getan. Damit "." und ".." nicht ins Array geschrieben werden, werden sie ausgenommen.
                if($file != "." && $file != ".." && $file != $filename)
                {
                  array_push ($linkl, "$file"); // Der Dateiname wird in den Array $linkl geschrieben
                }
              }
            
              // Anzahl der Dateien im Ordner == Anzahl der Einträge im Array
              $anzahl = count($linkl);
            
              // Array wird nach Alphabet sortiert
              sort ($linkl);
            
              foreach($linkl as $key => $value)
              {
            
              // Überprüfung, ob das thumbnail schon existiert,
                if(!file_exists($des_src."/".$value))
                {
                  // erstelle ein thumb
                  mkthumb($value, $thumbx, $thumby, $folder_scr, $des_src);
                }
            
              // echo "<a href=\"".$folder_scr."/".$value."\">[img].$des_src.[/img]</a>"; // Der Wert des Arrays wird ausgegeben
            
              }
            
              // schließe das Verzeichnis:
              closedir($verz); 
            
            ?>
            Ich danke Euch schon einmal für Eure hilfe.

            Kommentar


            • #7
              Ich bin leider gestern auch nicht weitergekommen, mit dem umbennen, habe aber da nochmal eine ganz andere Frage zu meinem Konzept.

              Wenn ich mein Formular wie gewünscht ausfülle, das das oben genannte Script dann in einem POPUP aufrufe, wie wird dann der Feldwert in das Formular nach dem Upload automatisch übergeben ohne die bisherigen Eingaben zu löschen. Mit einem Refresh ist das Formular ja wieder leer. Oder ist das nicht zu lösen, und ich muss es nacheinander machen, das heisst erst das Uploadscript und wenn sich das schliesst wird das formular aufgerufen mit dem Feldwert, um es weiter auszufüllen.

              Wie löst man so was logisch richtig. Wie gesagt ich habe hier erst seit einer Woche mit PHP zu tun und bin fleissig am Bücherlesen und Tutorials durchschauen.

              Bis dahin Christian

              Kommentar


              • #8
                also wenn du eine Variable (in deinem Fall der Bildname) übergeben willst, dann kannst du dies entweder per Formular oder per URL tun..
                Da du ja sowiso ein Formular hast, ist dies logischerweise die bessere Lösung..

                empfangen kannst du die Variable auf der nächsten Seite mit
                Code:
                $_POST['Variablenname']
                der Dateiname bei deinem Code steht in der Variable "Value".

                Also machst du folgendes:
                Code:
                $Value = $_POST['Variablenname']

                Kommentar


                • #9
                  Danke für dir Erklärung das habe ich verstande. Dann ist also besser erst den Bildupload zu machen und danach mit $value den Wert übernehmen und in das Formular zu übergeben. Das hat, wenn ich logisch kombinieren dann ja auch Vorteil, das ich das Bild schon im Formular anzeigen lassen kann.

                  Also so langsam fällt der groschen und ich muss immer wieder feststellen das PHP richtig spass macht.

                  Das mit dem umbennen scheint doch etwas komplizierter zu sein. Ich denke ich sollte dann dem Bild vorher schon einen Namen geben und diesen dann übernehmen, bzw so lassen.

                  Kommentar


                  • #10
                    du speicherst ja das Bild 2 Mal.

                    1. Das Bild als solches

                    2. Das Thumbnail des Bildes

                    Wenn du später daraus eine Bilder Gallerie machen willst, ist es von Vorteil wenn die beiden Bilddateien den selben Namen tragen. Dies geht ohne Probleme, wenn du die Thumbnails in einem anderen Ordner speicherst.

                    Also ich würde zuerst den Namen des Bildes generieren und erst dann mit dem Uploads beginnen...

                    Kommentar


                    • #11
                      Das war auch mein Ursprünglicher Plan. Eine Galerie soll es nicht werden. Ich habe in einem Datensatz verschiedene Feldwerte und halt eben auch ein Bild, welches zu dem Datensatz gehört. ich will die Bilder nur nicht in die Datenbank einbauen, damit diese sich nicht so aufbläht nach einiger Zeit, daher der Umweg über den Upload in ein Verzeichnis und eine späteren Aufrufs des Bildes beim dazugehörigen Datensatz per Link. Daher war mir auch das umbennen eigentlich sehr wichtig.

                      Genau wie Du es beschriebn hast, hatte ich es vor. Im Browser Formular einmal "Durchsuchen" für das Upload und ein Feld in dem man einen Namen eingibt. Das Bild sollte dann erst umbenannt werden, und automatisch die Endung jpg erhalten, da ich nur mit jpg arbeite, dann hochgeladen werden, und als Thumbnail mit dem gleichen "neuen" Namen kopiert werden. Schrit 2 und 3 funktionieren in dem Script oben schon super. Nur scheitere ich an Schritt 1 das umbennen vor dem Upload !!!!

                      Dann wird der Feldwert "value" in das folgende Formular übergeben, und man kann die dazugehörigen Daten eintragen. Später wir beim Anzeigen der Daten automatisch der Link zum Bild erzeugt ./pictures/$value.jpg , und so dann das Bild zum Datensatz angezeigt.

                      Ich drücke mich manchmal etwas blöd aus, ich hoffe ich konnte mein Vorhaben einigermassen erklären.

                      Das einzige was jetzt noch teste ist die übergabe des Wertes $value wie du es mir beschrieben hast.

                      Für das umbennen habe ich noch keine Lösung gefunden, die fertigen Scripts sind viel zu umfangreich und ich verstehe diese auch nicht wirklich um mir den passenden Teil des Scriptes zu nehmen.

                      Gruß Christian

                      Kommentar


                      • #12
                        SOS SOS SOS

                        Nun habe ich es zwar verstanden bekomme, es aber nicht zum laufen.

                        also wenn du eine Variable (in deinem Fall der Bildname) übergeben willst, dann kannst du dies entweder per Formular oder per URL tun..
                        Da du ja sowiso ein Formular hast, ist dies logischerweise die bessere Lösung..

                        empfangen kannst du die Variable auf der nächsten Seite mit
                        Code:
                        $_POST['Variablenname']


                        der Dateiname bei deinem Code steht in der Variable "Value".

                        Also machst du folgendes:
                        Code:
                        $Value = $_POST['Variablenname']
                        muss ich das in den oben genannten Script übergeben. Erst wird gefragt welche Datei, dann kommt das Upload und die Meldung erfolgreich, dabei wurde auch das Thumbnail erstellt. Im Script steht da für den Dateinamen die Variable
                        Code:
                        $value
                        . Wo muss ich jetzt des
                        Code:
                        $value = $_POST['Bildname']
                        einsetzen, damit nach dem erfolgreichen Upload und nach dem Hinweis "erfolgreichen übertragen" in der dann aufgerufenen eingabe_de.php es wieder mit $_POST['Bildname'] , zu Verfügung haben im Script als $Bildname.

                        Könnt Ihr mir folgen ??? Ich kann es bald selber nicht mehr.

                        Kommentar

                        Lädt...
                        X