Bilder verkleinern und in VZ schreiben

cool-catti

Grünschnabel
Hi ihr,
ich bin da an einem punkt angelangt, an dem ich nicht weiter weiß,
und zwar:

ich möchte in meinem forum, dass jeder Jpegs,PNG und auch GIFs hochladen kann per Upload-script.
Jetzt veränder ich die größe und die höhe und breite bei Jpeg und PNG. GIF geht ja leider nicht :(
Und dann will ich die neuen bilder auf platte schreiben und den pfad in ne mysql-tabelle schreiben... einmal als bild mit definierter größe und einmal als thumbnail mit kleineren größen...
bis dahin scheints auch alles zu , aber dann:
WIESO ERKENNEN DIE BROWSER NICHT DIE ANGELEGTEN BILDER?
Ich sehe sie per FTP, aber irgendwie sind sie doch nicht verfügbar. Und das, obwohl ich CHMOD auf 0777 setze...
BIIIIIIIITTTTE kann mir jemand kluges helfen?

Hier ist mein Script zur Verarbeitung der Bilder:

--------------------------------------------------------------------------------------------

<?php
//prüfen ob wirklich hochgeladen und per MAX_SIZE auf größe prüfen:

if (!is_uploaded_file($_FILES['pic_file']['tmp_name'])) {
$message='Das Bild ist zu groß! Bitte laden Sie nur Profilbilder hoch, deren Größe 300 Kilobyte nicht überschreitet!';
exit(include_once 'message.inc.php');
}

$path = $avatarpfad; // Url zum Speicherordner der großen Bilder
$thumb_path = $avatarthumbnailpfad; // Url zum Speicherordner der Vorschaubilder
$config_width = "150"; // Bildbreite max. bei großem Bild
$config_height = "200"; // Bildhöhe max. bei großem Bild
$config_thumb_width = "75"; // Bildbreite max. bei Vorschaubild
$config_thumb_height = "100"; // Bildhöhe max. bei Vorschaubild
$resizequality = "70"; // Bildkompressionsrate 0-100

if ($HTTP_POST_FILES['userfile']['tmp_name']<> 'none')
{

//Größe checken
$filesize = $HTTP_POST_FILES['pic_file']['size'];
if ($filesize>='350000') {
$message='Das Bild ist zu groß! Bitte laden Sie nur Profilbilder hoch, deren Größe 300 Kilobyte nicht überschreitet!';
exit(include_once 'message.inc.php');
}

$filename = $HTTP_POST_FILES['pic_file']['name'];
$filetype = $HTTP_POST_FILES['pic_file']['type'];
$filetmp = $HTTP_POST_FILES['pic_file']['tmp_name'];

// Typen festlegen

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;


case 'image/gif':

$pic_filetype = '.gif';
break;
default:
$fehlercode='Falsches Dateiformat! Nur JPEG, GIF oder PNG erlaubt!';
die(include_once 'fehlermeldung.inc.php');

//Namen für die dann bald mal fertigen Bilder definieren

$pic_filename = 'UserID_' . $ID . $pic_filetype;
$pic_thumbnail_filename = 'UserID_' . $ID . '_Thumbnail' . $pic_filetype;

//bei verschiedenen PHP-Versionen

$ini_val = ( @phpversion() >= '4.0.0' ) ? 'ini_get' : 'get_cfg_var';

if ( @$ini_val('open_basedir') != '' )
{
if ( @phpversion() < '4.0.3' )
{
die("open_basedir is set and your PHP version does not allow move_uploaded_file<br /><br />Please contact your server admin");
}

$move_file = 'move_uploaded_file';
}
else
{
$move_file = 'copy';
}

$move_file($filetmp, $path . $pic_filename);

// Und hier wird die CHMOD gemacht

@chmod($path . $pic_filename, 0777);


// größe bekommen
$pic_size = getimagesize($path . $pic_filename);
$pic_width = $pic_size[0];
$pic_height = $pic_size[1];
if ($pic_filetype == '.gif') {
$avatarbreite= $pic_width;
$avatarhoehe= $pic_height;
}

$gd_errored = FALSE;

switch ($pic_filetype)
{
case '.jpg':
$read_function = 'imagecreatefromjpeg';
break;
case '.png':
$read_function = 'imagecreatefrompng';
break;

// Folgend funktioniert wahrscheinlich nicht, aber ich habs trotzdem mal drin gelassen:

case '.gif'://
$read_function = 'imagecreatefrompng';
break;
}

$src = @$read_function($path . $pic_filename);


if (!$src)
{
$gd_errored = TRUE;
$pic_thumbnail = '';
}
else if( ($pic_width > $config_thumb_width) or ($pic_height > $config_thumb_height) )
{

// Breite und Höhe definieren:

if ($pic_width > $pic_height)
{
$thumbnail_width = $config_thumb_width;
$thumbnail_height = $config_thumb_width * ($pic_height/$pic_width);
}
else
{
$thumbnail_height = $config_thumb_height;
$thumbnail_width = $config_thumb_height * ($pic_width/$pic_height);
}

$thumbnail = @imagecreatetruecolor($thumbnail_width, $thumbnail_height);

$resize_function = 'imagecopyresampled';

@$resize_function($thumbnail, $src, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height, $pic_width, $pic_height);
}
else
{
$thumbnail = $src;
}

if (!$gd_errored)
{
$pic_thumbnail = $pic_thumbnail_filename;

// Write to disk
switch ($pic_filetype)
{
case '.jpg':
@imagejpeg($thumbnail, $thumb_path . $pic_thumbnail, $resizequality);
break;
case '.png':
@imagepng($thumbnail, $thumb_path . $pic_thumbnail);
break;
case '.gif'://
@imagepng($thumbnail, $thumb_path . $pic_thumbnail);
break;
}

@chmod($thumb_path . $pic_thumbnail, 0777);

} // End IF $gd_errored

// End Thumbnail Cache




// und nochmal das ganze fürs größere Bild

$gd_errored = FALSE;

switch ($pic_filetype)
{
case '.jpg':
$read_function = 'imagecreatefromjpeg';
break;
case '.png':
$read_function = 'imagecreatefrompng';
break;
case '.gif'://
$read_function = 'imagecreatefrompng';
break;
}

$src = @$read_function($path . $pic_filename);
if (!$src)
{
$gd_errored = TRUE;
$pic_resize = '';
}
else if( ($pic_width > $config_width) or ($pic_height > $config_height) )
{
// Resize it
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);

$resize_function = 'imagecopyresampled';

@$resize_function($resize, $src, 0, 0, 0, 0, $resize_width, $resize_height, $pic_width, $pic_height);
}
else
{
$resize = $src;
}

if (!$gd_errored)
{
$pic_resize = $pic_filename;

// Write to disk
switch ($pic_filetype)
{
case '.jpg':
@imagejpeg($resize, $path . $pic_resize, $resizequality);
break;
case '.png':
@imagepng($resize, $path . $pic_resize);
break;
case '.gif':
@imagepng($resize, $path . $pic_resize);
break;
}

@chmod($path . $pic_resize, 0777);

// End IF $gd_errored

} // End Picture Resize

}
$avatar_filename= $path.$pic_filename;
if ($pic_filetype=='.gif') {
$avatar_thumbnail= $avatar_filename; // Da wir mit PHP keine GIFs verkleinern können, nehmen wir hier einfach dasselbe Bild
$avatartyp='gif';
}
else {
$avatar_thumbnail= $thumb_path.$pic_thumbnail; // Bei JPEG, PNG geht es natürlich
}
$sql = "UPDATE usertable SET
avatarpfad='$avatar_filename',
avatarthumbnailpfad='$avatar_thumbnail',
avatarhoehe='$avatarhoehe',
avatarbreite='$avatarbreite',
avatartyp='$avatartyp'
WHERE ID='$user_id'";
if ($ok = @mysql_query($sql)) {
echo 'Bildpfad wurde in Datenbank geschrieben!';
} else {exit('Datenbankfehler beim Einfügen der Datei: '.
mysql_error());
}

// Andere Seite laden, auf der es angezeigt wird: - WERDEN SOLL :confused:

header('location: ' . $_SERVER['PHP_SELF'] . '?display=profil&' . SID);
?>

-----------------------------------------------------------------------------------------------

Thats it, aber auch wenn mein source zusammengestückelt aussieht, so ist der ja doch einleuchtend, oder? ABER MENSCH MENSCH MENSCH, warum kann ich
DIESE BLÖDEN BILDER NICHT SEHEN IM BROWSER?

Bei mir offline mit Xampplite-Server geht es prima im IE, aber nicht im Firefox oder NN.
Online klappts nicht mal im IE.

BITTE HELFT MIR!
danke,
cool-catti
 
Bevor dir hier einer helfen wird, solltest du den Code in den dazu vorgesehenen BB Tags (wird dann gehighlighted) setzten. Dadurch kann man ihn besser lesen.
 

Neue Beiträge

Zurück