Bild nach Upload verkleinern und ausgeben

carolina31

Grünschnabel
Hey liebes Forum!
Ich weiß, dass dieses Thema hier schon oft angeschnitten wurde, habe mit der Su-Fu auch schon einiges gefunden, komme jedoch überhaupt nicht voran.
Also nun zu meinem Problem:

Wie der Titel schon aussagt möchte ich dem User auf meiner Seite die Möglichkeit geben, ein Foto raufzuladen. Da ich es jedoch auf der Größe von 1024px mal 768px brauche, soll im gleichen Vorgang die größe Minimiert werden. (1024px deswegen, weil es sich um Hintergrundbilder handelt, die ja in der Regel groß sind!)

Hier mein bisheriger Code:

Code:
move_uploaded_file($_FILES['bild']['tmp_name'], "upload/".$_FILES['bild']['name']); 
// Upload des Bildes



$sql= "INSERT INTO Tabelle (bildName, bildPfad) VALUES ('$bildname', '$bild')";
$ergebnis = mysql_query($sql);

$image = "upload/".$_FILES['bild']['name']; // Bild wieder aus Ordner auslesen

$size = getimagesize($image);
$im = imagecreatefromjpeg($image);
$width = $size[0];
$height = $size[1];
$zwidth = 1024;
$zheight = 768;
$im2 = imagecreatetruecolor($zwidth, $zheight);
imagecopyresized($new, $im2, 0, 0, 0, 0, $zwidth, $zheight, $width, $height);
imagejpeg($im2);

Danach soll es noch mit <img> ausgegeben werden.

Was mach ich falsch?

Danke schon mal.


Grüße
 
Du hast die Parameter für das Ursprungsbild und das Zielbild bei "imagecopyresize" falsch gesetzt:

PHP:
imagecopyresized($im2, $im, 0, 0, 0, 0, $zwidth, $zheight, $width, $height);
 
OK danke, hab ich probiert.
Nun kommen unidentifizierbare Zeichen die in etwa so aussehen:

Code:
????JFIF??>CREATOR: gd-jpeg v1.0 (using IJG JPEG v70), default quality ??C    $.' ",#(7),01444'9=82<.342??C  2!!22222222222222222222222222222222222222222222222222??"?? ???}***AQa"q2???#B??R??$3br? %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz??????????????????????????????????????????????????????????????????????????? ???w***AQaq"2?B???? #3R?br? $4?%?&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz??????????????????????????????????????????????????????????????????????????????)??p?F?S??;??1K?1?7b???a???c?????)? ???9?cH?G)h????K?1@XLQ?iiq@?7??Ph??KF)?? S@?.?j)q???%-???c?^?S??R?(??????f??f???;??.{Q?v)1@?R?m??P!(???h(?.(?@??P?'Z1N??z GSJ:?in9????M?Z(w??\Pb?R?@%????I?IM???R?J? ?E-\}"?v2)(B?CF)hh??(?? ??c?\S %-.1@??Ni?M??(?(?/JJZ?7??F( ?Gj\Q?w?S???4?n8?S?I@l7

://
 
Bist du sicher das der Pfad zum Bild auch wirklich stimmt?

Ich habe es hier mit einem gespeicherten Bild und der Pfadangabe getestet und da klappt es ohne Probleme.
 
Ich hab jz versucht, ein Bild direkt aus dem Ordner auszugegeben mit


Code:
$image = "upload/gebirge.jpg";

aber die wird die Ausgabe noch grausamer.

Meinen wir eh die gleiche Zeile?


PS: Sorry, wenn ich mich gerade etwas doof anstelle :D
 
Ist nicht doof, diese Zeile habe ich gemeint.

Zeige bitte nochmal deinen kompletten (!!) Code wie er jetzt aussieht.

NACHTRAG: Wird die SQL-Anweisung korekt ausgeführt? Nicht das da ein Fehler entsteht der dann die Ausgabe zerstört.
 
Zuletzt bearbeitet:
Auf der ersten Seite soll der User ein Bild auswählen.

Code:
<form action="upload_image.php" method="post" enctype="multipart/form-data" name="form1" >
<table>
  <tr>
    <td>Name des Bildes:</td> // Ist optional
    <td><input name="bildname" type="text" />
</td>
  </tr>
  <tr>
    <td>Datei:</td>
    <td><input name="bild" type="file" /></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><input name="button" type="submit" value="Hochladen"/>
</td>
  </tr>
</table>
</form>


Und die Datei upload_image.php sieht so aus:

Code:
<?php
include ("db.php");
$verbindung = mysql_connect(HOST, USER, KENNWORT);
mysql_select_db(DATENBANK) or die ("Datenbank konnte nicht ausgewählt werden");
$bild = $_FILES['bild']['name'];
$bildname = $_POST["bildname"];


move_uploaded_file($_FILES['bild']['tmp_name'], "upload/".$_FILES['bild']['name']); 
$sql= "INSERT INTO image_slider (bildName, bildPfad) VALUES ('$bildname', '$bild')";
$ergebnis = mysql_query($sql);

$image = "upload/".$_FILES['bild']['name'];

$size = getimagesize($image);
$im = imagecreatefromjpeg($image);
$width = $size[0];
$height = $size[1];
$zwidth = 1024;
$zheight = 768;
$im2 = imagecreatetruecolor($zwidth, $zheight);
imagecopyresized($im2, $im, 0, 0, 0, 0, $zwidth, $zheight, $width, $height);  
imagejpeg($im2);


?>
<img src="<?php echo $im2; ?>" />
 
Zuletzt bearbeitet:
Also ich habe bei mir jetzt alles was die Datenbank bzw. den Datenbankeintrag angeht auskommentiert (oben die Zeilen 2, 3, 4, 10 und 11) und es läuft.

Es muss also da irgendwo der Fehler sein!
 
Wirklich komisch. Ich versteh das nicht. In die Datenbank wird alles richtig eingetragen, und wenn ich $image ausgebe kommt das Bild auch richtig, sobald ich es aber weiterlaufen lasse kommen die ganzen komischen Zeichen wieder.
 
Ja es ist komisch. Habe jetzt eine Tabelle angelegt wie du sie hast und auch die db.php wird benützt. Also alles genauso wie bei dir.

Aber bei mir wird alles richtig angezeigt. Gibt es bei dir noch irgendwas was du hier nicht reingestellt hast?

Welche PHP Version hast du und auf welchem Server läuft das alles?

Was bedeutet eigentlich "...sobald ich es weiterlaufen lasse..." ?
 

Neue Beiträge

Zurück