JPEG beim Hochladen verkleinern

blck

Mitglied
Hallo,
Ich versuche beim Hochladen ein Bild zu verkleinern. Das mache ich in dem ich nach einem POST überprüfe ob die Bildmaße bestimmte Maße überschreiten und falls ja rufe ich die Funktion resizeimage() auf. Leider kriege ich immer die Meldung zurück: Hochladen nicht erfolgreich. Das Script zum verkleinern stammt von php.net:
PHP:
function resizeimage($file) {

// Set a maximum height and width
$width = 600;
$height = 800;

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

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

$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($file);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

// Output
imagejpeg($image_p, $tmpdatei);
}

if (isset($_POST['fileupload'])) {
	$orgdatei = $_FILES['file']['name'];
	$orgdatei = '0~'.$orgdatei;
	$tmpdatei = $_FILES['file']['tmp_name'];
	$dateityp = GetImageSize($tmpdatei);
	$dateigro = $_FILES['file']['size'];
	$src_width   = $picsize[0];
	$src_height  = $picsize[1];
	$pfad = 'include/imgupload/'.$orgdatei;

 if ((isset($_POST['filepos']))&&($_POST['filepos']=='posblog')) {
//Überprüfung ob Bildmaße stimmen sonst Fuktion aufrufen! $tmpdatei wird nach oben übergeben!
	if (($src_height >= '800')||($src_width >= '600')) resizeimage($tmpdatei);

		if (move_uploaded_file($tmpdatei, $pfad)) {
			echo "<script type='text/javascript'>alert('Die Datei '.$orgdatei.' wurde erfolgreich hochgeladen');</script>";
		}else
			echo "<script type='text/javascript'>alert('Hochladen nicht erfolgreich');</script>";
 }

Ha leider noch wenig Erfahrung mit Funktionen und dem Bearbeiten von Bilder, ich dneke aber es handelt sich um keinen großen Fehler :)

MfG Blck
 
Ist das Uploaden auf dem Webserver erlaubt? Bzw. liegt dein Bild im Rahmen der erlaubten Grösse?

phpinfo() bzw. apache.conf (oä.) geben weitere Auskunft
 
N'Abend,
hatte ich vergessen:
Es handelt sich um einen lokalen Webserver, die Schreibrechte sowie der Ordner sind gesetzt und es besteht keine Größenbeschränkung! Es liegt auch definitiv am Script, vor dem einbau der Funktion lief alles ohne Probleme. Sinn der ganzen Sache ist, dass ich eine Gallery baue, die bei zu großen Bildern sonst so lange lädt. Deswegen die Verkleinerung.

So far,
Blck
 
Hello!

Also was mir mal auffält, ist dass Deine Funktion imageresize einen Parameter $file bekommt, Du aber ganz unten in der Funktion mit $tmpdatei arbeitest. Nachdem $tmpdatei keine globale Variable ist, und Du sie auch nicht in die Funktion übernimmst, existiert sie dort auch nicht!

Zweitens brauchst Du das header-Gschichtl nicht, weil Du ja nicht das Bild im Browser ausgeben möchtest, sondern es in eine Datei schreibst.

Als nächstes würde ich unbedingt VORHER move_uploaded_file machen, und NACHHER die verschobene Datei verkleinern, ich denke das ist ganz wichtig!


Ist der Pfad, in den Du das File speichern möchtest, auch im gleichen Verzeichnis wie das Script, dass diese Vergrösserung machen soll?


Lg Chris
 
Zurück