GS-Lib Problem bei Jpeg-erstellung

Blaschki

Erfahrenes Mitglied
Hey ich habe eine Probelm mit der Thumbnail-erstellung.

Es wird immer nur ein scharzes Bild gezeichnet.
Kann mir jemadn sagen wo da der Fehlerteufel sitzt.
Danke im Vorraus
PHP:
<?php 
 $heute = date("Y-m-d");
 
 $abfrage="SELECT * FROM foto WHERE f_id like '$f_typ'  ORDER by name ASC LIMIT 0,1";
 $ergebnis=mysql_query($abfrage);
 while($zeile = mysql_fetch_array($ergebnis)) { 
 $pfad_1 = ($zeile[pfad_name]);
 }
 
$tempname = $_FILES['file']['tmp_name']; 
$name = $_FILES['file']['name']; 

$type = $_FILES['file']['type']; 
$size = $_FILES['file']['size']; 

if($type != "image/jpeg" && $type != "image/jpg") { 
$err[] = "nur jpeg (jpg) Dateien dürfen hochgeladen werden."; 
} 
if($size > "200000") { 
$err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 200 KB!"; 
} 
If(empty($err)) { 
copy("$tempname", "foto/$pfad_1/$name"); 

$im1=imagecreatefromjpeg("$tempname"); //erstellt ein Abbild im Speicher
$size=getimagesize("$tempname"); //ermittelt die Größe des Bildes

$breite=$size[0]; //die Breite des Bildes
$hoehe=$size[1]; //die Höhe des Bildes
$breite_neu=200; //die breite des Thumbnails
$hoehe_neu=150; //die Höhe des Thumbnails

$im2=imagecreate($breite_neu,$hoehe_neu); //Thumbnail im Speicher erstellen

imagecopyresized($im2,$im1,0,0,$breite,$hoehe,0,0,$breite_neu,$hoehe_neu); //Bild in Thumbnail kopieren

imagejpeg($im2,"small_foto/$pfad_1/$name"); //Thumbnail speichern
imagedestroy($im1); //Speicherabbild wieder löschen
imagedestroy($im2); //Speicherabbild wieder löschen

echo "<b>Die Datei $name wurde erfolgreich hochgeladen!</b>"; 
} 
else { 
foreach($err as $error) 
echo "$error<br>"; 
} 

$name_o =("foto/$pfad_1/$name");
 
$insertin = "INSERT INTO foto (kat,name,f_memo,f_ein,f_typ) VALUES ('b','$name_o','$memo','$heute','$f_typ')";
mysql_query($insertin) or die("Error: " . mysql_error());
?>
 
Zuletzt bearbeitet:
Ich sehe irgendwie ein winzige Problem in folgender Zeile
PHP:
if($type != "image/jpeg" && $type != "image/jpg")
was aber eigentlich keinen Einfluss auf das Thumbnail Erstellen haben dürfte.

Also den MIME-Type image/jpg gibt es nicht. Der MIME-Type einer JPEG Datei ist immer image/jpeg oder image/pjpeg und das unabhängig davon ob die Endung nun .jpg, .jpeg oder .jpe ist. Der MIME-Type ist im header der Datei verankert und hat nichts mit der Dateiendung zu tun.

Dann wäre evtl. noch für die Größenabfrage interessant zu wissen, dass 200kb nicht 200000 Bytes sind sondern 204800 Bytes sind. 200000 Bytes hingegen wären nur 195,3kb. Nur das du dich später nicht wunderst, wenn du nicht wirklich bis 200kb gehen kannst ;)

$im2=imagecreate($breite_neu,$hoehe_neu); //Thumbnail im Speicher erstellen
Versuche an dieser Stelle mal statt imagecreate() die Funktion imagecreatetruecolor(). Zwar sollte auch mit imagecreate kein schwarzes Bild rauskommen, aber man weisst ja nie.

Und Fehlermeldungen spuckt der nicht aus ? Es ist einfach nur schwarz ? Und nur das Thumbnail oder auch das normale Bild ?
 
Zurück