also, das formular zum hochladen der bilder:
echo "<form action='resize.php' method='POST' enctype='multipart/form-data'>";
// echo "<input type='hidden' name='MAX_FILE_SIZE' value='350000' />";
echo "<input type='hidden' name='gid' value='".$gid."' />";
echo "<input type='hidden' name='dest_header' value='index.php?id=106&aktion=gal_edit&gid=".$gid."' />";
echo "<input type='hidden' name='dest_width' value='720' />";
echo "<input type='hidden' name='dest_height' value='720' />";
echo "<input type='hidden' name='dest_location' value='bilder/".$gid."/' />";
echo "<input type='hidden' name='dest_thumb_width' value='100' />";
echo "<input type='hidden' name='dest_thumb_height' value='100' />";
echo "<input type='file' name='pic_file' />";
echo "<input type='submit' name='pic_upload' value='hochladen' />";
echo "</form>";
Alles anzeigen
resize.php
<?php
error_reporting(E_ALL);
include("dbconnect.php");
include("functions.php");
session_start();
$path = "./".$_POST['dest_location']; // Speicherordner der Bilder
$thumb_path = $path."thumb/"; // Speicherordner der Vorschaubilder
$config_width = $_POST['dest_width']; // Bildbreite max. bei großem Bild
$config_height = $_POST['dest_height']; // Bildhöhe max. bei großem Bild
if($_POST['dest_thumb_width'])
{ $config_thumb_width = "100"; } // Bildbreite max. bei Vorschaubild
if($_POST['dest_thumb_height'])
{ $config_thumb_height = "100"; } // Bildhöhe max. bei Vorschaubild
$resizequality = "70"; // Bildkompressionsrate 0-100
if (!empty($_FILES['pic_file']))
{
$filename = $_FILES['pic_file']['name'];
$filetype = $_FILES['pic_file']['type'];
$filetmp = $_FILES['pic_file']['tmp_name'];
// Dateitypen überprüfen
switch ($filetype)
{
case 'image/jpeg':
case 'image/jpg':
case 'image/pjpeg':
$pic_filetype = '.jpg';
break;
case 'image/png':
case 'image/x-png':
$pic_filetype = '.png';
break;
default:
die("Falsches Dateiformat. Nur JPEG oder PNG erlaubt!");
}
// Dateinamen vergeben
srand((double)microtime()*1000000);
do
{
$pic_filename = md5(uniqid(rand())) . $pic_filetype;
}
while( file_exists($path.$pic_filename) );
// Kopieren ins Zielverzeichnis
copy($filetmp, $path.$pic_filename) or die($path);
@chmod($path.$pic_filename, 0777);
// Bildgröße ermitteln
$pic_size = getimagesize($path . $pic_filename);
$pic_width = $pic_size[0];
$pic_height = $pic_size[1];
// Soll ein Thumbnail erstellt werden? (je nach aufrufendem Formular, siehe Variablenbelegung)
if( $config_thumb_width )
{
$error = FALSE;
// Benötigtes imagecreatefrom je nach Dateityp
switch ($pic_filetype)
{
case '.jpg':
$read_function = 'imagecreatefromjpeg';
break;
case '.png':
$read_function = 'imagecreatefrompng';
break;
}
$src = @$read_function($path.$pic_filename);
if (!$src)
{
$error = TRUE;
$pic_thumbnail = '';
}
// Muss das Bild resized werden?
else if( ($pic_width > $config_thumb_width) or ($pic_height > $config_thumb_height) )
{
// Resize...
if ($pic_width > $pic_height)
{
$thumb_width = $config_thumb_width;
$thumb_height = $config_thumb_width * ($pic_height/$pic_width);
}
else
{
$thumb_height = $config_thumb_height;
$thumb_width = $config_thumb_height * ($pic_width/$pic_height);
}
$thumbnail = @imagecreatetruecolor($thumb_width, $thumb_height);
@imagecopyresampled($thumbnail, $src, 0, 0, 0, 0, $thumb_width, $thumb_height, $pic_width, $pic_height);
}
else
{
$thumbnail = $src;
}
if (!$error)
{
$pic_thumbnail = $pic_filename;
// Thumbnail speichern
switch ($pic_filetype)
{
case '.jpg':
@imagejpeg($thumbnail, $thumb_path.$pic_thumbnail, $resizequality);
break;
case '.png':
@imagepng($thumbnail, $thumb_path.$pic_thumbnail);
break;
}
@chmod($thumb_path . $pic_thumbnail, 0777);
}
} // Thumbnail-resize fertig
// Originalbild resizen
$error = FALSE;
// Benötigtes imagecreatefrom je nach Dateityp
switch ($pic_filetype)
{
case '.jpg':
$read_function = 'imagecreatefromjpeg';
break;
case '.png':
$read_function = 'imagecreatefrompng';
break;
}
$src = @$read_function($path . $pic_filename);
if (!$src)
{
$error = TRUE;
$pic_resize = '';
}
// Muss das Bild resized werden?
else if( ($pic_width > $config_width) or ($pic_height > $config_height) )
{
// Resize...
if ( (($pic_width / $pic_height) > ($config_width / $config_height)) )
{
$resize_width = $config_width;
$resize_height = $config_width * ($pic_height/$pic_width);
}
else
{
$resize_height = $config_height;
$resize_width = $config_height * ($pic_width/$pic_height);
}
$resize = @imagecreatetruecolor($resize_width, $resize_height);
@$imagecopyresampled($resize, $src, 0, 0, 0, 0, $resize_width, $resize_height, $pic_width, $pic_height);
}
else
{
$resize = $src;
}
if (!$error)
{
$pic_resize = $pic_filename;
// Bild speichern
switch ($pic_filetype)
{
case '.jpg':
@imagejpeg($resize, $path . $pic_resize, $resizequality);
break;
case '.png':
@imagepng($resize, $path . $pic_resize);
break;
}
@chmod($path . $pic_resize, 0777);
}
}
$host = $_SERVER['HTTP_HOST'];
$uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = $_POST['dest_header'];
header("Location: http://$host$uri/$extra");
exit;
?>
Alles anzeigen
Soweit der Code. Habe es grade wieder getestet mit Bildern um die 1MB. Die resize.php bricht ohne jegliche Fehlermeldung ab, ich kriege eine Blanko-Site.
Ich habe jetzt gerade in einem anderen Forum noch diese Antwort hier gefunden, zu jemandem der wohl ein ähnliches Problem wie ich hatte.
Möglicherweise ist das auch der Grund:
Zitat
Das wird wohl an der Größe der Bilder liegen. Jeder PHP-Prozess bekommt einen Speicher zugewissen, sobald das Script aber mehr als diesen Zugewiesenen braucht, ist Ende. Wie groß sind die Bilder? Je nach Kamera können das einige MB sein. Du könntest Dir eine PHP-Umgebung auf Deinen Rechner installieren, die erlaubte Speichermenge erhöhen und die Bilder auf Deinem Rechner verkleinern und dann uploaden.
*** Nobody ***
Die dargestellte Lösung ist für mich leider nicht brauchbar, es sollen ja andere Leute Bilder auf der Seite hochladen. Denen kann ich die im Zitat vorgeschlagene Lösung kaum zumuten 