Suchmaschinenoptimierung
   
 

SEMSEO Konferenz 2012
 

 
 

Uploadscript um Resize erweitern

Neues Thema eröffnen   Neue Antwort erstellen    ABAKUS Foren-Übersicht -> Webprogrammierung, Templatedesign & Microformats
 Browser die Quelle von Bildern ändern ? Prüfen ob User Google Account hat  
stadi

pr


: 19.08.2007
: 2



: 19.08.2007, 19:20    : Uploadscript um Resize erweitern Antworten mit Zitat

Nabend zusammen,

Ich nutze ein Uploadscript um Bilddateien damit auf einen Server hochzuladen, nach erfolgtem Upload wird die Datei entsprechend der Dateiendung in einem Unterverzeichnis auf dem Server abgelegt, der Link zum Bild als BB-Code ausgegeben und das Bild angezeigt.
Jetzt würde ich das ganze gern um die Funktion erweitern das zu große Bilder automatisch auf eine Breite von max. 640 Pixel verkleinert werden.
Ich denke für PHP-Spezialisten ist das ganze kein Problem, für mich als blutiger PHP Anfänger schon

vielleicht könnte mir jemand bischen auf die Sprünge helfen, wäre echt Klasse. Hier das orginal-Script:

Code:
<?php
# Umgebungsvariablen festlegen
include("config.inc");


# wurde das Formular wurde abgeschickt ?
if($_POST["submit"] == "Upload") {

   // Wurde wirklich eine Datei hochgeladen?
   if(is_uploaded_file($_FILES["file"]["tmp_name"])) {

   // Gültige Endung? ($ = Am Ende des Dateinamens) (/i = Groß- Kleinschreibung nicht berücksichtigen)
   if(preg_match("/\." . $allowed_types . "$/i", $_FILES["file"]["name"])) {

      // Datei auch nicht zu groß
      if($_FILES["file"]["size"] <= $max_byte_size) {

          // Alles OK -> Datei kopieren
          $md5s= md5_file($_FILES["file"]["tmp_name"]);       # md5summe der Datei erstellen, um doppelt abgelegte Bilder zu vermeiden
          $size=$_FILES["file"]["size"];                      # dateigroesse bestimmen
          $hexsize=str_pad(dechex($size),6,"0",STR_PAD_LEFT); # dateigroesse in hexadezimal umrechnen
          $ext=".gif";                                        # default-Dateiendung = .gif
          $u1="x";                                            # default-Upload-Unterverzeichnis = "x"

          if($_FILES["file"]["type"]=="image/pjpeg")          # pjpegs ins Unterverzeichnis "p" legen
          {
            $ext = ".jpg";
            $u1="p";
          }
          if($_FILES["file"]["type"]=="image/jpg")            # jpgs ins Unterverzeichnis "j" legen
          {
            $ext = ".jpg";
            $u1="j";
          }

          if($_FILES["file"]["type"]=="image/jpeg")          # jpegs ebenfalls ins Unterverzeichnis "j" legen
          {
            $ext = ".jpg";
            $u1="j";
          }
          if($_FILES["file"]["type"]=="image/gif")           # "gif animationen ins Unterverzeichnis "g" legen
          {
             $ext = ".gif";
             $u1="g";
          }
          $f=$md5s.$hexsize;                                # hexadezimalcode aus dateigroesse und md5summe erstellen
          $newf=base_convert($f,16,36);                     # diesen hexadezimalcode (=basis 16) auf basis 36 umrechnen
          $filename=$newf.$ext;                             # neuer Dateiname ist dieser neue Code + oben ermittelter Dateiendung
          $s1=substr($filename,0,1);                        # das erste Zeichen des Dateinamens ermitteln
          $newfile="$basedir/$uploaddir/$u1/$s1/$filename"; # Absoluter lokaler Pfad zum neuen Dateinamen
          $webfile="$webdir/$uploaddir/$u1/$s1/$filename";  # Absoluter WWW-Pfad zur hochgeladenen Datei

          if(copy($_FILES["file"]["tmp_name"], $newfile)) {

             echo "<center>Die Datei <b>".$_FILES["file"]["name"]."</b> ($size Bytes) wurde erfolgreich hochgeladen!</center><br>";
            # echo "Name: " . $_FILES["file"]["name"] . "<br>";
            # echo "Größe: " . $_FILES["file"]["size"] . " Byte<br>";
            # echo "MIME-Type: " . $_FILES["file"]["type"] . "<br>";
            # echo "Link: <a href=\"$webfile\">" . $_FILES["file"]["name"] . "</a><br>";
             print "<hr><br>\n";
             print "<center><div style='align:middle;'>BBCode für das IOFF:\n";
             print "<textarea readonly rows=3 cols=110 INPUT onmouseover=this.focus() onfocus=this.select()>";
             print "\n";
             print "[CENTER][img]".$webfile."[/img][/CENTER]" ;
             print "</textarea>\n</div></center><br>";
          #   echo "<center>md5sum: $md5s<br>\n";
          #   echo "new fil : $filename";
             echo "<br><hr><br><center>hochgeladenes Bild:<br><br><img src=\"$webfile\"></cnter><br>";
          #   print_r($_FILES);
             print "<br>\n<a href=/upload/index.php>Zurück zur Startseite</a>\n";
 
##################### logfile erstellen
             $handle = @fopen ("logs/uploaded.log","a");
             if($handle)
             {
                 $loc_de = setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');

                 $today = date("j.F Y, H:i:s");
                 $remote=$_SERVER["REMOTE_ADDR"];
                 $uploadedfilename="$uploaddir/$u1/$s1/$filename";
                 $browser=$_SERVER["HTTP_USER_AGENT"];
                 $referer=$_SERVER["HTTP_REFERER"];
                 $oldname=$_FILES["file"]["name"];
                 $towrite=@sprintf("%-30s : %15s : %7s Bytes : %s : %s : %s :%s\n",$today,$remote,$size,$uploadedfilename,$oldname,$browser,$referer);
                 @fwrite($handle,$towrite);
                 @fclose($handle);
             }

           }
          else {
            echo "Datei konnte nicht hochgeladen werden.";
          }
      }
      else {
          echo "Die Datei darf nur eine Größe von " . $max_byte_size . " Byte besitzen.";
      }
   }
   else {
     echo "Die Datei besitzt keine ungültige Endung.";
   }
}
else {
   echo "Keine Datei zum Hochladen angegeben.";
}

}
else {

?>
<style type="text/css">
<!--
.Stil1 {color: #FF0000}
.Stil3 {font-size: 12}
.Stil5 {
   font-size: 24px;
   font-weight: bold;
}
-->
</style>

<div align="center">
  <p class="Stil5">Fr&uuml;hlings Bilder -Uploader</p>
</div>
<div style="font-family:Arial,Helvtica,Verdana;font-size:8pt;">
  <li class="Stil3">
    <div align="center">erlaubte Datei-Endungen sind nur <font color="red">.gif</font> und <span class="Stil1">.jpg</span> <br>
   
  </div>
  <li class="Stil3">
    <div align="center">Die maximale Dateigr&ouml;&szlig;e beträgt vorerst <?php echo number_format($max_byte_size,0,".",".");  ?> Bytes<br>
    </div>
  <li>
    <div align="center"><span class="Stil3">sollte eine identische Datei bereits vorhanden sein (dieselbe Checksumme, Dateigr&ouml;&szlig;e), so bekommt man den Link zur bereits existierenden Datei zurück.</span><br>
    </div>
</div>
<div align="center"><br>
  <br>
</div>
<form action="index.php" method="post" enctype="multipart/form-data" name="upload">
  <div align="center">
    <input type="file" name="file">
    <input type="submit" name="submit" value="Upload">
  </div>
</form>
<div align="center"><br>
</div>
<div style="font-family:Arial,Helvtica,Verdana;font-size:7pt;">
  <div align="center">Bitte die Bilder nicht in anderen Foren als dem IOFF verlinken - das funktioniert ohnehin nicht....
    <br>
    <br>
    Danke für Euer Verständnis. <br>
    <br>
    <br>
  </div>
  <hr>
<br>
<br>
</div>
<?

}

?>
Nach oben
stadi Private Nachricht senden
bangolo

pr


: 23.02.2007
: 347
: Essen


: 20.08.2007, 12:15    : Uploadscript um Resize erweitern Antworten mit Zitat

beim upload lässt sich das imho nicht realisieren, da musst du das Bild über die Grafik Funktionen von php gdlib neu schreiben lassen. Das ist auch nicht mal so eben in den code einzubauen, gibt aber fertige Klassen die das machen.

Nicht auf jedem server ist gdlib installiert kann man aber in der phpinfo() sehen

PR ist nebensächlich, tausche bei themenrelevanz und gutem Content zu Bereichen Gesundheit, Sport, Wellness, Diät, Kosmetik, Umwelt, Reisen, Bau, Energie, Umweltschutz
Nach oben
bangolo Private Nachricht senden WWW
subcordem

pr


: 01.03.2006
: 90



: 21.08.2007, 06:43    : Uploadscript um Resize erweitern Antworten mit Zitat

in dem zusammenhang ist vielleicht das ganz nützlich:
http://php.about.com/od/advancedphp/ss/php_thumbnail_4.htm
Nach oben
subcordem Private Nachricht senden
stadi

pr


: 19.08.2007
: 2



: 21.08.2007, 10:42    : Uploadscript um Resize erweitern Antworten mit Zitat

Ich hab mittlerweile einiges zu dem Zhema gelesen und gefunden, ich hab das Script jetzt mal angepasst:

Code:
<?php
# Umgebungsvariablen festlegen
include("config.inc");


# wurde das Formular wurde abgeschickt ?
if($_POST["submit"] == "Upload") {

   // Wurde wirklich eine Datei hochgeladen?
   if(is_uploaded_file($_FILES["file"]["tmp_name"])) {

   // Gültige Endung? ($ = Am Ende des Dateinamens) (/i = Groß- Kleinschreibung nicht berücksichtigen)
   if(preg_match("/\." . $allowed_types . "$/i", $_FILES["file"]["name"])) {

      // Datei auch nicht zu groß
      if($_FILES["file"]["size"] <= $max_byte_size) {

          // Alles OK -> Datei kopieren
          $md5s= md5_file($_FILES["file"]["tmp_name"]);       # md5summe der Datei erstellen, um doppelt abgelegte Bilder zu vermeiden
          $size=$_FILES["file"]["size"];                      # dateigroesse bestimmen
          $hexsize=str_pad(dechex($size),6,"0",STR_PAD_LEFT); # dateigroesse in hexadezimal umrechnen
          $ext=".gif";                                        # default-Dateiendung = .gif
          $u1="x";                                            # default-Upload-Unterverzeichnis = "x"

          if($_FILES["file"]["type"]=="image/pjpeg")          # pjpegs ins Unterverzeichnis "p" legen
          {
            $ext = ".jpg";
            $u1="p";
          }
          if($_FILES["file"]["type"]=="image/jpg")            # jpgs ins Unterverzeichnis "j" legen
          {
            $ext = ".jpg";
            $u1="j";
          }

          if($_FILES["file"]["type"]=="image/jpeg")          # jpegs ebenfalls ins Unterverzeichnis "j" legen
          {
            $ext = ".jpg";
            $u1="j";
          }
          if($_FILES["file"]["type"]=="image/gif")           # "gif animationen ins Unterverzeichnis "g" legen
          {
             $ext = ".gif";
             $u1="g";
          }
          $f=$md5s.$hexsize;                                # hexadezimalcode aus dateigroesse und md5summe erstellen
          $newf=base_convert($f,16,36);                     # diesen hexadezimalcode (=basis 16) auf basis 36 umrechnen
          $filename=$newf.$ext;                             # neuer Dateiname ist dieser neue Code + oben ermittelter Dateiendung
          $s1=substr($filename,0,1);                        # das erste Zeichen des Dateinamens ermitteln
          $newfile="$basedir/$uploaddir/$u1/$s1/$filename"; # Absoluter lokaler Pfad zum neuen Dateinamen
          $webfile="$webdir/$uploaddir/$u1/$s1/$filename";  # Absoluter WWW-Pfad zur hochgeladenen Datei
 # Resize beginnen
// The file
$filename = "$basedir/$uploaddir/$u1/$s1/$filename";

// Set a maximum height and width
$width = 640;
$height = 480;

// Content type
header('Content-type: image/jpeg');

// Get new dimensions
list($width_orig, $height_orig) = getimagesize($filename);

$ratio_orig = $width_orig/$height_orig;

if ($width/$height > $ratio_orig) {
   $width = $height*$ratio_orig;
} else {
   $height = $width/$ratio_orig;
}

// Resample
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

// Output
imagejpeg($image_p, null, 100);
 # Resize fertig
 
          if(copy($_FILES["file"]["tmp_name"], $newfile)) {

             echo "<center>Die Datei <b>".$_FILES["file"]["name"]."</b> ($size Bytes) wurde erfolgreich hochgeladen!</center><br>";
            # echo "Name: " . $_FILES["file"]["name"] . "<br>";
            # echo "Größe: " . $_FILES["file"]["size"] . " Byte<br>";
            # echo "MIME-Type: " . $_FILES["file"]["type"] . "<br>";
            # echo "Link: <a href=\"$webfile\">" . $_FILES["file"]["name"] . "</a><br>";
             print "<hr><br>\n";
             print "<center><div style='align:middle;'>BBCode für das IOFF:\n";
             print "<textarea readonly rows=3 cols=110 INPUT onmouseover=this.focus() onfocus=this.select()>";
             print "\n";
             print "[CENTER][img]".$webfile."[/img][/CENTER]" ;
             print "</textarea>\n</div></center><br>";
          #   echo "<center>md5sum: $md5s<br>\n";
          #   echo "new fil : $filename";
             echo "<br><hr><br><center>hochgeladenes Bild:<br><br><img src=\"$webfile\"></cnter><br>";
          #   print_r($_FILES);
             print "<br>\n<a href=/upload/index.php>Zurück zur Startseite</a>\n";
 
##################### logfile erstellen
             $handle = @fopen ("logs/uploaded.log","a");
             if($handle)
             {
                 $loc_de = setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');

                 $today = date("j.F Y, H:i:s");
                 $remote=$_SERVER["REMOTE_ADDR"];
                 $uploadedfilename="$uploaddir/$u1/$s1/$filename";
                 $browser=$_SERVER["HTTP_USER_AGENT"];
                 $referer=$_SERVER["HTTP_REFERER"];
                 $oldname=$_FILES["file"]["name"];
                 $towrite=@sprintf("%-30s : %15s : %7s Bytes : %s : %s : %s :%s\n",$today,$remote,$size,$uploadedfilename,$oldname,$browser,$referer);
                 @fwrite($handle,$towrite);
                 @fclose($handle);
             }

           }
          else {
            echo "Datei konnte nicht hochgeladen werden.";
          }
      }
      else {
          echo "Die Datei darf nur eine Größe von " . $max_byte_size . " Byte besitzen.";
      }
   }
   else {
     echo "Die Datei besitzt keine ungültige Endung.";
   }
}
else {
   echo "Keine Datei zum Hochladen angegeben.";
}

}
else {

?>
<style type="text/css">
<!--
.Stil1 {color: #FF0000}
.Stil3 {font-size: 12}
.Stil5 {
   font-size: 24px;
   font-weight: bold;
}
-->
</style>

<div align="center">
  <p class="Stil5">Fr&uuml;hlings Bilder -Uploader</p>
</div>
<div style="font-family:Arial,Helvtica,Verdana;font-size:8pt;">
  <li class="Stil3">
    <div align="center">erlaubte Datei-Endungen sind nur <font color="red">.gif</font> und <span class="Stil1">.jpg</span> <br>
   
  </div>
  <li class="Stil3">
    <div align="center">Die maximale Dateigr&ouml;&szlig;e beträgt vorerst <?php echo number_format($max_byte_size,0,".",".");  ?> Bytes<br>
    </div>
  <li>
    <div align="center"><span class="Stil3">sollte eine identische Datei bereits vorhanden sein (dieselbe Checksumme, Dateigr&ouml;&szlig;e), so bekommt man den Link zur bereits existierenden Datei zurück.</span><br>
    </div>
</div>
<div align="center"><br>
  <br>
</div>
<form action="index.php" method="post" enctype="multipart/form-data" name="upload">
  <div align="center">
    <input type="file" name="file">
    <input type="submit" name="submit" value="Upload">
  </div>
</form>
<div align="center"><br>
</div>
<div style="font-family:Arial,Helvtica,Verdana;font-size:7pt;">
  <div align="center">Bitte die Bilder nicht in anderen Foren als dem IOFF verlinken - das funktioniert ohnehin nicht....
    <br>
    <br>
    Danke für Euer Verständnis. <br>
    <br>
    <br>
  </div>
  <hr>
<br>
<br>
</div>
<?

}

?>


Leider funktioniert es noch nicht so wie es soll
Das Bild wird hochgeladen und auch verkleinert, allerdings wird es wohl nicht abgespeichert, nach erfolgtem Upload wird nicht die gewünschte ausgabeseite mit dem BB-Code der Bilddatei ausgegeben sondern eine weiße Seite auf der lediglich das veränderte Bild angezeigt wird. in den Eigenschaften des Bildes steht als Dateiname index.jpg

Hat evtl jemand nen Wink mit dem Zaunpfahl für mich?
Nach oben
stadi Private Nachricht senden
Schalberger

pr


: 01.05.2006
: 86



: 21.08.2007, 11:12    : Uploadscript um Resize erweitern Antworten mit Zitat

*wink*

In dieser Zeile

imagejpeg($image_p, null, 100);

das null ersetzen durch den Dateinamen, unter dem du das kleine Bild speichern möchtest ($newfile). Denn sonst wird das (binäre) Bild einfach an die Standard-Ausgabe ausgegeben, was in diesem Fall der Browser ist.

Den ganzen If-Zweig mit dem Copy musst du dann natürlich rausschmeißen (sonst überschreibst du das Bild gleich wieder) und dafür ne Fehlerbehandlung fürs Verkleinern bauen.

Grüße, Dan
Nach oben
Schalberger Private Nachricht senden
bangolo

pr


: 23.02.2007
: 347
: Essen


: 21.08.2007, 11:17    : Uploadscript um Resize erweitern Antworten mit Zitat

ich habe es jetzt nichzt probiert kann also auch was anderes sein, aber imho liegt der Fehler darin das du dieses resize mit in den upload code einbaust.

Es wäre auch einfacher zu testen wenn du den upload erstmal abschließen würdest dann das hochgeladene bild lädst und von der größe anpasst und wieder speicherst.

Soweit ich weiß ist das Bild erstmal nicht im upload verzeichnis, sondern in einem temp verzeichnis und wird erst mit copy in das eigentliche uplaod verzeichniss geschoben, das ist aber erst nach Abschluss des upload scriptes der Falle. versucht du jetzt vorher die größe zu ändern gibt es das Bild nicht, was du dann speicherst ist ein leeres Bild das du selber erstellt hast

PR ist nebensächlich, tausche bei themenrelevanz und gutem Content zu Bereichen Gesundheit, Sport, Wellness, Diät, Kosmetik, Umwelt, Reisen, Bau, Energie, Umweltschutz
Nach oben
bangolo Private Nachricht senden WWW
Neues Thema eröffnen   Neue Antwort erstellen    ABAKUS Foren-Übersicht -> Webprogrammierung, Templatedesign & Microformats
Seite 1 von 1

 






Ähnliche Beiträge
Thema Forum Antworten
Gut optimierten Shop mit CSS Navigationsleiste erweitern Gut optimierten Shop mit CSS Navigati... stecher0013 Ich hab' da mal 'ne Frage 4 08.08.2011, 15:55 Gut optimierten Shop mit CSS Navigationsleiste erweitern
Projekt erweitern oder neues "kleineres" parallel? Projekt erweitern oder neues "kl... pimpi Ich hab' da mal 'ne Frage 4 17.12.2010, 10:07 Projekt erweitern oder neues "kleineres" parallel?
Partnerprogramme erweitern Angebot Partnerprogramme erweitern Angebot SeriousBadMan Partnernetzwerke 1 19.04.2010, 20:38 Partnerprogramme erweitern Angebot
PHP Formular-Script erweitern PHP Formular-Script erweitern GordonK Webprogrammierung, Templatedesign & Microformats 11 23.01.2010, 12:51 PHP Formular-Script erweitern
Artikel oder starre Seite erweitern? Artikel oder starre Seite erweitern? Blaulicht Google Forum 20 14.10.2009, 14:34 Artikel oder starre Seite erweitern?
Community erweitern Community erweitern megatom Ich hab' da mal 'ne Frage 6 09.10.2009, 15:54 Community erweitern
Alte Seiten updaten oder erweitern? Alte Seiten updaten oder erweitern? pow Universal Search 3 28.07.2009, 10:33 Alte Seiten updaten oder erweitern?

Suchmaschinenoptimierung | Latent Semantische Optimierung (LSO) | SEO Blog | SEO Online Tools | Suchmaschinenmarketing Angebot | Online Marketing

Impressum

Dieses SEO Forum läuft unter phpBB.


Sie lesen gerade: Uploadscript um Resize erweitern