Bilder Upload-Script

  • Themenstarter Themenstarter McNiko
  • Beginndatum Beginndatum
M

McNiko

Hallo, ich habe ein UserBild-Upload-Script, funktioniert auch alles, nur jetzt möchte ich aus einem Hochgeladen Bild 2 machen, ein großes was bis zu 800x... sein darf und eines was 150x... sein muss...

Hier die edit_userbild.php

PHP:
Bitte nur Bilder im .jpg Format hochladen

<br><br>

<b>Das Bild darf nicht größer als 1MB sein</b>

<br><br>

<form action="upload_userbild.php" method="post" enctype="multipart/form-data">
<input type="file" name="datei1"><br>
<br><input type="submit" value="Hochladen">
</form>

upload_userbild.php
PHP:
<?

include("verbindung.php");

$szMySQL = "UPDATE user SET Userbild = 'images/userbild/".$_SESSION['userid'].".jpg' WHERE UserID = '".$_SESSION['userid']."'";

$result = mysql_query($szMySQL);

if (!$result) {
   echo "Anfrage ($szMySQL) konnte nicht ausgeführt werden : " . mysql_error();
   exit;
}

# Extension

include("verbindung.php");

# SQL Code in einer obligatorischen Variable

$szMySQL = "SELECT * FROM user WHERE username='".$_SESSION['username']."' ORDER BY UserID DESC";

$sqlErgebnis = mysql_query($szMySQL);

# Ausgabe

while($sqlRowMySQL = mysql_fetch_object($sqlErgebnis))
{

$dateityp = GetImageSize($_FILES['datei1']['tmp_name']);
if($dateityp[2] != 0)
   {

   if($_FILES['datei1']['size'] <  1048576)
      {
      move_uploaded_file($_FILES['datei1']['tmp_name'], "images/userbild/$sqlRowMySQL->UserID.jpg".$_FILES['']);
      echo "<br>Dein Bild wurde erfolgreich hochgeladen!<br><br><meta http-equiv=\"refresh\" content=\"1; URL=user.php?UserID=".$_SESSION['userid']."\">";
      }

   else
      {
         echo "Das Bild darf nicht größer als 1MB sein";
      }

    }

else
    {
    echo "Bitte nur Bilder im .jpg Format hochladen";
    }

}

?>

danke

mfg
 
Willst du dann 2 Dateien auf deinem Server liegen haben oder möchtest du dir Thumbs erzeugen?

Ich persönlich würde dir zum Erzeugen von Thumbs raten. Nimmt weniger Speicherplatz auf dem Server weg!
 
Hallo,

Hallo, ich habe ein UserBild-Upload-Script, funktioniert auch alles, nur jetzt möchte ich aus einem Hochgeladen Bild 2 machen, ein großes was bis zu 800x... sein darf und eines was 150x... sein muss...

Mit folgendem Code kannst du die zwei gewünschten Bildgrößen, d.h. ein Bild mit max. 800 px Breite und eins mit 150px Breite, erzeugen, wobei das hochgeladene Bild auf max. 800 px Breite reduziert ist:

PHP:
$echtdatei = 'images/userbild/$sqlRowMySQL->UserID.jpg';
$bildpfad_small = "pfad_fuer_das_150er/";
$dateiname = 'dateiname_fuer_das_thumb';
$function_image_create = "ImageCreateFromJpeg";
$function_image_new = "ImageJpeg";
$size = getimagesize("$echtdatei"); 
$breite = $size[0]; 
$hoehe = $size[1]; 
if ($breite >= 801) $neueBreite01 = 800;
if ($breite <= 800) $neueBreite01 = $breite;
$neueHoehe01 = intval($hoehe*$neueBreite01/$breite); 
if ($breite >= 151) $neueBreite02 = 150;
if ($breite <= 150) $neueBreite02 = $breite;
$neueHoehe02 = intval($hoehe*$neueBreite02/$breite); 
$altesBild=$function_image_create("$echtdatei"); 
$neuesBild01=ImageCreateTrueColor($neueBreite01,$neueHoehe01); 
ImageCopyResized($neuesBild01,$altesBild,0,0,0,0,$neueBreite01, $neueHoehe01,$breite,$hoehe); 
$function_image_new($neuesBild01,"$echtdatei");
$neuesBild02=ImageCreateTrueColor($neueBreite02,$neueHoehe02); 
ImageCopyResized($neuesBild02,$altesBild,0,0,0,0,$neueBreite02, $neueHoehe02,$breite,$hoehe); 
$function_image_new($neuesBild02,"$bildpfad_small"."$dateiname");

Code ist ungetetstet :-)

Ich hoffe dir damit geholfen zu haben.

Gruss
Mofu
 
Wo soll es den genau im Code eingebaut werden? Nachdem die Datei hochgeladen wurde?

PHP:
<?

include("verbindung.php");

$szMySQL = "UPDATE user SET Userbild = 'images/userbild/".$_SESSION['userid'].".jpg' WHERE UserID = '".$_SESSION['userid']."'";



$result = mysql_query($szMySQL);

if (!$result) {
   echo "Anfrage ($szMySQL) konnte nicht ausgeführt werden : " . mysql_error();
   exit;
}

# Extension

include("verbindung.php");

# SQL Code in einer obligatorischen Variable

$szMySQL = "SELECT * FROM user WHERE username='".$_SESSION['username']."' ORDER BY UserID DESC";

$sqlErgebnis = mysql_query($szMySQL);

# Ausgabe

while($sqlRowMySQL = mysql_fetch_object($sqlErgebnis))
{

$dateityp = GetImageSize($_FILES['datei1']['tmp_name']);
if($dateityp[2] != 0)
   {

   if($_FILES['datei1']['size'] <  1048576)
      {
      move_uploaded_file($_FILES['datei1']['tmp_name'], "images/userbild/$sqlRowMySQL->UserID.jpg".$_FILES['']);

$echtdatei = 'images/userbild/$sqlRowMySQL->UserID.jpg';
$bildpfad_small = "images/userbild/small/";
$dateiname = '".$_SESSION['userid']."';
$function_image_create = "ImageCreateFromJpeg";
$function_image_new = "ImageJpeg";
$size = getimagesize("$echtdatei"); 
$breite = $size[0]; 
$hoehe = $size[1]; 
if ($breite >= 801) $neueBreite01 = 800;
if ($breite <= 800) $neueBreite01 = $breite;
$neueHoehe01 = intval($hoehe*$neueBreite01/$breite); 
if ($breite >= 151) $neueBreite02 = 150;
if ($breite <= 150) $neueBreite02 = $breite;
$neueHoehe02 = intval($hoehe*$neueBreite02/$breite); 
$altesBild=$function_image_create("$echtdatei"); 
$neuesBild01=ImageCreateTrueColor($neueBreite01,$neueHoehe01); 
ImageCopyResized($neuesBild01,$altesBild,0,0,0,0,$neueBreite01, $neueHoehe01,$breite,$hoehe); 
$function_image_new($neuesBild01,"$echtdatei");
$neuesBild02=ImageCreateTrueColor($neueBreite02,$neueHoehe02); 
ImageCopyResized($neuesBild02,$altesBild,0,0,0,0,$neueBreite02, $neueHoehe02,$breite,$hoehe); 
$function_image_new($neuesBild02,"$bildpfad_small"."$dateiname");  

      echo "<br>Dein Bild wurde erfolgreich hochgeladen!<br><br><meta http-equiv=\"refresh\" content=\"1; URL=user.php?UserID=".$_SESSION['userid']."\">";
      }

   else
      {
         echo "Das Bild darf nicht größer als 1MB sein";
      }

    }

else
    {
    echo "Bitte nur Bilder im .jpg Format hochladen";
    }

}

?>

mfg
 
Hallo,

jep, vom Prinzip her richtig. Solltest aber nicht das Bild/Thumbnail umbennen in den Session-Namen, sonst fehlt dir logischerweise nachher die Zuordnung.
Lass doch das Thumb genauso heißen wie das Hauptbild, da du ja einen Unterodner für die Thumbs verwenden willst, brauchst du beim Aufruf nur den Pfad (und nicht den Namen) ändern.

Gruss
Mofu
 
Das kommt dann dabei raus:

Warning: getimagesize() [function.getimagesize]: Unable to access images/userbild/$sqlRowMySQL->UserID.jpg in ... on line 58

Warning: getimagesize(images/userbild/$sqlRowMySQL->UserID.jpg) [function.getimagesize]: failed to open stream: No such file or directory in ... on line 58

Warning: Division by zero in ...on line 63

Warning: Division by zero in ... on line 66

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: Unable to access images/userbild/$sqlRowMySQL->UserID.jpg in ... on line 67

Warning: imagecreatefromjpeg(images/userbild/$sqlRowMySQL->UserID.jpg) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in ... on line 67

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions ... on line 68

Warning: imagecopyresized(): supplied argument is not a valid Image resource in ... on line 69

Warning: imagejpeg(): supplied argument is not a valid Image resource in ... on line 70

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in ... on line 71

Warning: imagecopyresized(): supplied argument is not a valid Image resource in ... on line 72

Warning: imagejpeg(): supplied argument is not a valid Image resource in ... on line 73

Dein Bild wurde erfolgreich hochgeladen!

mfg
 
Zuletzt bearbeitet von einem Moderator:
Das kommt dann dabei raus:
Warning: getimagesize() [function.getimagesize]: Unable to access images/userbild/$sqlRowMySQL->UserID.jpg in ... on line 58
mfg


Und schon in der ersten Fehlermeldung siehst du, das das Script nicht den Namen für das Bild übernommen hat, sondern die MySQL-Anweisung....

Lösung:
Bildnamen VORHER definieren und dann übergeben:
Falsch:
PHP:
$echtdatei = 'images/userbild/$sqlRowMySQL->UserID.jpg';
Besser is wohl:
PHP:
$echtdatei = 'images/userbild/bildname.jpg';      << FALSCH / "bildname" durch UserID ersetzten
Du nimmst ja als Bildname die UserID, also bau dir die Vari mit der UserID zusammen...

Und zudem solltest du immer darauf achten, das du auch die richtigen CHMOD (Rechte) für die Ordner gesetzt hast, sonst wird das nix...

Gruss
Mofu
 
Zuletzt bearbeitet:
Aber es will dann immernoch nicht klappen!

Warning: getimagesize() [function.getimagesize]: Unable to access 1 in ... on line 58

Warning: getimagesize(1) [function.getimagesize]: failed to open stream: No such file or directory in ... on line 58

Warning: Division by zero in ... on line 63

Warning: Division by zero in ... on line 66

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: Unable to access 1 in ... on line 67

Warning: imagecreatefromjpeg(1) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in ... on line 67

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in ... on line 68

Warning: imagecopyresized(): supplied argument is not a valid Image resource in ... on line 69

Warning: imagejpeg(): supplied argument is not a valid Image resource in ... on line 70

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in ... on line 71

Warning: imagecopyresized(): supplied argument is not a valid Image resource in ... on line 72

Warning: imagejpeg(): supplied argument is not a valid Image resource in ... on line 73

Dein Bild wurde erfolgreich hochgeladen!

mfg
 
Zuletzt bearbeitet von einem Moderator:
Guten Morgen !

alsooo.....
Die erste Fehlermeldung besagt ja, das er das Bild NICHT ansprechen kann, zumal er das Bild "1" ansprechen will...
"1" ist aber sicher wohl NICHT der richtige Dateiname, zumal ich irgendwo mal gerlernt habe, das ein File auch eine Extension hat :-)
Es wäre sicherlich recht hilfreich wenn du
a) mal den jetzt verwendeten Code
und
b) den Inhalt der Zielordner (Bild drin oder nicht, Bildname, Extension ?)
posten würdest.
Ich würde mal glatt darauf tippen, das du den Bildnamen besser gesagt die Vari hierfür
versemmelt hast...

Gruss
Mofu

PS: Fettdruck-Taste klemmt wohl, was ?! (!)
 
Zurück