Profil | Mitglieder | Registrieren | Start | Suche


PHP-Support.de » Programmierung » PHP & MySQL » Codeschnipsel » jpg Bilder beim Upload verkleinern    » Hallo Gast [Login | Registrieren]

Neues Thema | Antworten   

Autor Beitrag
Thunderfox
Mitglied
Aktiver User


Dabei seit: 27.02.2008
Herkunft: Aurich
Posts: 207
     jpg Bilder beim Upload verkleinern Zitat | Bearbeiten

Dieses Script verkleinert jpg Bilder beim Upload

ich hab schon vor Ewigkeiten mal folgenden Script irgendwo in irgendeinem Forum gesehen, ein wenig abgeändert und benutze ihn schon seit meiner ersten Homepage.
Mit dem kann man JPG Bilder in einer anderen Auflösung und Bildqualität bekommen:
 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:

<?php
session_start
();
$datei $_FILES['datei']['name']; // Dies hab ich noch nicht getestet, da ich den Namen immer nach datum und user id abgespeichert hab.
$datei str_replace(" ""_""$datei");
$datei htmlentities($datei); // Mit leerzeichen -> _ hab ich auch noch nicht getestet, sollte aba klappen
$dateityp GetImageSize($_FILES['datei']['tmp_name']);
if(
$dateityp[2] == 2)
   {

   if(
$_FILES['datei']['size'] <  2048000//max. Größe in bytes
      
{
      
move_uploaded_file($_FILES['datei']['tmp_name'], "upload/temp-$datei");
                  
$file        "upload/temp-$datei";
                  
$target    "upload/$datei";
                  
$max_width   "500"//Breite ändern
                  
$max_height   "500"//Höhe ändern
                  
$quality     "90"//Qualität ändern (max. 100)
                  
$src_img     imagecreatefromjpeg($file);
                  
$picsize     getimagesize($file);
                  
$src_width   $picsize[0];
                  
$src_height  $picsize[1];
                  
                  if(
$src_width $src_height)
                  {
                  if(
$src_width $max_width)
                  {
                    
$convert $max_width/$src_width;
                    
$dest_width $max_width;
                    
$dest_height ceil($src_height*$convert);
                  }
                  else
                  {
                    
$dest_width $src_width;
                    
$dest_height $src_height;
                  }
                  }
                  else
                  {
                  if(
$src_height $max_height)
                  {
                    
$convert $max_height/$src_height;
                    
$dest_height $max_height;
                    
$dest_width ceil($src_width*$convert);
                  }
                  else
                  {
                    
$dest_height $src_height;
                    
$dest_width $src_width;
                  }
                  }
                  
$dst_img imagecreatetruecolor($dest_width,$dest_height);
                  
imagecopyresampled($dst_img$src_img0000$dest_width$dest_height$src_width$src_height);
                  
imagejpeg($dst_img"$target"$quality);






// Ab hier wird noch eine Thumbnail erstellt. 
                  
$file2       "upload/$datei";
                  
$target2    "upload/thumbnail-$datei";
                  
$max_width   "150"//Thumbnailbreite
                  
$max_height   "150"//Thumbnailhöhe
                  
$quality     "90"//Thumbnailqualität
                  
$src_img     imagecreatefromjpeg($file2);
                  
$picsize     getimagesize($file2);
                  
$src_width   $picsize[0];
                  
$src_height  $picsize[1];
                  
                  if(
$src_width $src_height)
                  {
                  if(
$src_width $max_width)
                  {
                    
$convert $max_width/$src_width;
                    
$dest_width $max_width;
                    
$dest_height ceil($src_height*$convert);
                  }
                  else
                  {
                    
$dest_width $src_width;
                    
$dest_height $src_height;
                  }
                  }
                  else
                  {
                  if(
$src_height $max_height)
                  {
                    
$convert $max_height/$src_height;
                    
$dest_height $max_height;
                    
$dest_width ceil($src_width*$convert);
                  }
                  else
                  {
                    
$dest_height $src_height;
                    
$dest_width $src_width;
                  }
                  }
                  
$dst_img imagecreatetruecolor($dest_width,$dest_height);
                  
imagecopyresampled($dst_img$src_img0000$dest_width$dest_height$src_width$src_height);
                  
imagejpeg($dst_img"$target2"$quality);

                  
unlink($file);
                  echo 
"<img src=\"upload/$datum-$userid.jpg\">";
                  }

   else
      {
         echo 
"<center><b>Das Bild darf nicht größer als 2MB sein</b></center>";
      }

    }

else
    {
    echo 
"<center><b>Bitte nur Bilder im JPG Format hochladen</b></center>";
    }
?>


Hab den nun nicht ganz genau auf Fehler überprüft aber dachte, ihr könntet es evtl. gebrauchen. Man muss einfach im Ordner, indem das Script ist ein Ordner namens upload machen, dem die nötigen Rechte geben und noch ein Formular zum Script mit nem Dateifeld namens "datei".
Das die Bilder in einer Mysql Tabelle gespeichert werden, könnt ihr ja selbst noch dazu machen.

L.G. Andre

P.S. Man kann dies auch gut per While schleife in ein "Massenumwandlungsscript umwandeln. Einfach ne While schleife mit dem Inhalt des Ordners machen. (Dafür muss einem aber genug Ram zur Verfügung stehen)




Post wurde schon 1x editiert, das letzte mal am 06.08.2008 um 12:40 von Andavos
28.07.2008, 00:34 Profil | PM | E-Mail  
Gast


      Zitat | Bearbeiten

der funkt nit


26.08.2008, 20:25  
Gast


     Geht doch! Zitat | Bearbeiten

Es sind natürlich ein paar Anpassungen nötig. und ein Fehler ist auch drinn :-(

Zuerst der Fehler: In Zeile 105 steht
 PHP 
1:
echo "<img src=\"upload/$datum-$userid.jpg\">";

Das ist blöd da es die Datei $datum-$userid.jpg nicht gibt. Ersetze $datum-$userid.jpg durch $datei

Die Anpassungen:
ersetze alle "upload/" dur den Ordnernamen mit abschlißenden / in die Du deine Dateien hochladen möchtest. Achte darauf das der Ordner auch die Schreibrechte hat.

Das Feld welches den lokalen Dateipfad enthält muss den Namen datei benutzen also sollte das Formular etwa so aussehen:
 PHP 
1:
2:
3:
4:
5:

<form enctype="multipart/form-data" action="" method="POST">
  <input type="hidden" name="MAX_FILE_SIZE" value="2048000">
  Die Datei: <input name="datei" type="file"> <input type="Submit" name="add" value="hochladen">
</form>

so und schon geht es


13.09.2009, 19:57  
Gast


      Zitat | Bearbeiten

Zitat:
Orginal von Gast
"upload/"

sollte eigendlich upload/ sein


13.09.2009, 20:00  
Gast


      Zitat | Bearbeiten

Zitat:
Orginal von Gast
Zitat:
Orginal von Gast
"upload/"

sollte eigendlich rot geschrieben upload/ sein




13.09.2009, 20:00  
Morpheus267
Mitglied
Guter User


Dabei seit: 06.05.2009
Herkunft: keine Angabe
Posts: 278
      Zitat | Bearbeiten

Gibts auch nen reines Bilder verkleinerungs Script welches mit jpg/png/gif arbeitet?

Das sind halt so alle gängigen Formate.


12.11.2009, 18:31 Profil | PM | E-Mail  
Vielgeist
Mitglied
Exzellenter User


Dabei seit: 26.12.2008
Herkunft: Berlin
Posts: 1371
      Zitat | Bearbeiten

ich hab eins, aber wozu nimmst du nicht seins?


CONTEMPLATION

If today was perfect, there would be no need for tomorrow.


Mein Youtube Channel
12.11.2009, 22:57 Profil | PM | E-Mail  
Morpheus267
Mitglied
Guter User


Dabei seit: 06.05.2009
Herkunft: keine Angabe
Posts: 278
      Zitat | Bearbeiten

1. Weils nen Uplaod ist was zwar nicht schlimm ist aber gut.
2. Weil ich jpg/png/gif verkleinern muss und nicht nur jpg.

PS: Habe das Script mal so wie es da oben steht ausprobiert und funzt 1A. ^^


14.11.2009, 17:20 Profil | PM | E-Mail  
evolutionchaos
Mitglied
Neuling


Dabei seit: 01.01.2010
Herkunft: keine Angabe
Posts: 4
      Zitat | Bearbeiten

Hallo,

bin neu hier und habe folgendes Problem bei deinem Script. Habe alles endsprechend angepasst und den oben genannten Fehler ausgebessert. Wenn ich jetzt das Bild auswähle und auf hochladen klicken, bekomme ich folgende Fehlermeldung:

Fatal error: Call to undefined function imagecreatefromjpeg() in D:\Server\Files\incl2.php on line 18

Woran kann das liegen?

 PHP 
1:
$src_img     = imagecreatefromjpeg($file);


Gruß
Chaos

PS: Liegt auf meinem localhost, was ja aber keine Probleme machen sollte oder?




Post wurde schon 3x editiert, das letzte mal am 01.01.2010 um 18:37 von evolutionchaos
01.01.2010, 18:35 Profil | PM | E-Mail  
looper
Mitglied
Guter User


Dabei seit: 27.01.2008
Herkunft: keine Angabe
Posts: 262
      Zitat | Bearbeiten

schon komisch... die Fehlermeldung sagt ja eigentlich aus, dass die Funktion nicht existiert.

ich würde mal meinen, dass dir dazu eine Erweiterung vom Server fehlt.

Hier siehst du ein mal die Anforderungen, die die Image-Funktionen an dein Server stellen:

http://de.php.net/manual/de/image.requirements.php

guck mal nach, ob dein Server diese Anforderungen erfüllt.


~looper
lala, wieder da, hihi
01.01.2010, 20:42 Profil | PM | E-Mail  
evolutionchaos
Mitglied
Neuling


Dabei seit: 01.01.2010
Herkunft: keine Angabe
Posts: 4
      Zitat | Bearbeiten

Hat wirklich dran gelegen, dass ich keine GD-Library eingebunden hatte... sry, Anfänger halt

Gruß
Chaos


01.01.2010, 22:34 Profil | PM | E-Mail  
looper
Mitglied
Guter User


Dabei seit: 27.01.2008
Herkunft: keine Angabe
Posts: 262
      Zitat | Bearbeiten

hätte ich das nicht mal zufällig bei php.net gelesen, hätte ich das auch nicht gewusst


~looper
lala, wieder da, hihi
02.01.2010, 12:24 Profil | PM | E-Mail  
Gast


      Zitat | Bearbeiten

Habe da mal ne Frage wie binde ich das ein??


09.02.2013, 17:58  
Gast


      Zitat | Bearbeiten

Zitat:
Orginal von Gast
Habe da mal ne Frage wie binde ich das ein??

habe mich da gerade undeutig ausgedrückt!
Wie muss ich das starten? Wenn es auf meine seite kommen soll???


09.02.2013, 17:59  
MRMicha
Mitglied
Neuling


Dabei seit: 09.11.2015
Herkunft: keine Angabe
Posts: 1
     Temp Dateien Zitat | Bearbeiten

Hey, erstmal danke für das tolle Upload Script.

Ich habe mal eine Frage dazu. Auf meinem Server werden nun die verkleinerten Bilder gespeichert, aber zusätzlich befinden sich dort auch noch die TEMP Dateien, die die Originalgrößen haben. Gibt es noch eine Funktion, die man in das Script einbauen kann, sodass diese vom Server wieder gelöscht werden ??? Wenn ja, kann mir jemand dabei helfen .

Gruß und Danke

Micha



09.11.2015, 17:44 Profil | PM | E-Mail  
FalkenaugeMihawk
Mitglied
Perfekter User


Dabei seit: 05.06.2010
Herkunft: Schweiz
Posts: 2619
      Zitat | Bearbeiten

Du kannst Dateien mit unlink() löschen.


12.11.2015, 18:01 Profil | PM | E-Mail  
Seiten (1):  1 
PHP-Support.de » Programmierung » PHP & MySQL » Codeschnipsel » jpg Bilder beim Upload verkleinern   

Neues Thema | Antworten   


Powered by Command Board 1.0 - Beta 2.0 © 2004-08 PHP-Einfach | Impressum | Datenschutz