Probleme beim Bild verkleinern

StonE12

Mitglied
Hall zusammen ,
ich habe folgendes Script , dass Bilder von einem User hochläd und danach mit der Funktion resizeImage verkleinert. Funktioniert auch prima, nur im Internet Explorer nicht. Die Bilder werden ohne Kürzel in den Ordner gelegt und auch net verkleinert. Woran kann das liegen. Hier das Script :
PHP:
function resizeImage($file_name_src, $file_name_dest, $width=0, $height = 0, $quality=100)
      {
    
       if (file_exists($file_name_src)  && isset($file_name_dest))
       {
           if ($width == 0 && $height == 0)
             return false;
           
           $est_src = pathinfo(strtolower($file_name_src));
           $est_dest = pathinfo(strtolower($file_name_dest));
           
           $size = getimagesize($file_name_src);
    
           if ($height && ! $width)
           {
             $h = number_format($height, 0, ',', '');
             $w = number_format(($size[0]/$size[1])*$height,0,',','');
           }
           else if (! $height && $width)
           {
             $w = number_format($width, 0, ',', '');
             $h = number_format(($size[1]/$size[0])*$width,0,',','');
           }
           else
           {
             $h = number_format($height, 0, ',', '');
             $w = number_format($width, 0, ',', '');
           }
    
           if ($est_dest['extension'] == strtolower("gif") || $est_dest['extension'] == strtolower("jpg"))
           {
               $file_name_dest = substr_replace($file_name_dest, 'jpg', -3);
               $dest = imagecreatetruecolor($w, $h);
               imageantialias($dest, TRUE);
           } elseif ($est_dest['extension'] == strtolower("png"))
           {
               $dest = imagecreatetruecolor($w, $h);
               imageantialias($dest, TRUE);
           } else
           {
               return FALSE;
           }
    
           switch($size[2])
           {
           case 1:      //GIF
               $src = imagecreatefromgif($file_name_src);
               break;
           case 2:      //JPEG
               $src = imagecreatefromjpeg($file_name_src);
               break;
           case 3:      //PNG
               $src = imagecreatefrompng($file_name_src);
               break;
           default:
               return FALSE;
               break;
           }
    
           imagecopyresampled($dest, $src, 0, 0, 0, 0, $w, $h, $size[0], $size[1]);
           
           switch($size[2])
           {
           case 1:
           case 2:
               imagejpeg($dest,$file_name_dest, $quality);
               break;
           case 3:
               imagepng($dest,$file_name_dest);
           }
           return TRUE;
       }
       return FALSE;
    }

datenbank();
$daten_1 = mysql_query("SELECT * FROM `WHOIS` WHERE 1 AND `USERNAME` = '".$_GET[USERNAME]."' AND `ZEIT` = '".$_GET[ZEIT]."' LIMIT 0,01");
            while ($sp = mysql_fetch_array($daten_1))
            {
            session_start();
                if ($_SESSION['username']    ==    strtoupper($sp[USERNAME])    &&    $_SESSION['passwort']    ==    strtoupper($sp[PASSWORT]))
                {
// Variabeln festlegen
$max_byte_size = 800000;
$allowed_types = "(jpg|jpeg|gif|bmp|png)";

// Formular wurde abgeschickt 
if($_POST["submit"] == "Upload") {

// Wurde wirklich eine Datei hochgeladen?
if(is_uploaded_file($_FILES["file"]["tmp_name"])) {

// Gültige Endung? ($ = Am Ende des Dateinamens) (/i = Groß- Kleinschreibung nicht berücksichtigen)
if(preg_match("/\." . $allowed_types . "$/i", $_FILES["file"]["name"])) {

// Dateinendung
if ($_FILES["file"]["type"]        ==        "image/jpeg")
{
$dEndung        =        ".jpg";
}
if ($_FILES["file"]["type"]        ==        "image/gif")
{
$dEndung        =        ".gif";
}
if ($_FILES["file"]["type"]        ==        "image/bmp")
{
$dEndung        =        ".bmp";
}
if ($_FILES["file"]["type"]        ==        "image/png")
{
$dEndung        =        ".png";
}

// Datei auch nicht zu groß
if($_FILES["file"]["size"] <= $max_byte_size) {

// Alles OK -> Datei kopieren

if(copy($_FILES["file"]["tmp_name"], 'leer/'.'w_'.strtoupper($_GET[USERNAME]). strtoupper($dEndung))) {
resizeImage('leer/'.'w_'.strtoupper($_GET[USERNAME]). strtoupper($dEndung), 'leer/'.'w_'.strtoupper($_GET[USERNAME]). strtoupper($dEndung) , 280, 0);

echo "Datei erfolgreich hochgeladen!<br>";

if ($_POST[submit]        ==        true)
{
mysql_query("UPDATE `WHOIS` SET `BILD` = 'leer/w_".strtoupper($_GET[USERNAME])."".strtoupper($dEndung)."' WHERE `USERNAME` = '".$_GET[USERNAME]."' AND `ZEIT` = '".$_GET[ZEIT]."' LIMIT 1");
}
}
else {

echo "Datei konnte nicht hochgeladen werden.";

}

}
else {

echo "Die Datei darf nur eine Größe von " . $max_byte_size . " Byte besitzen.";

}

}
else {

echo "Die Datei besitzt keine ungültige Endung.";

}

}
else {

echo "Keine Datei zum Hochladen angegeben.";

}

}
else {

echo "Bitte benutzen Sie das Upload Formular.";

}
Hoffe ihr könnt mir helfen.
MfG Crossi
 
Ich will ja nicht wissen, wie groß das Bild ist sondern ich möchte es verkleinern. Die Breite soll dabei immer 280 Pixel sein und die Höhe wird dementsprechend angepasst. Wenn ich die Höhe und Breite des Bildes kenne bringt mir das eigentlich garnichts.
 
Die getimageinfo()-Funktion ermittelt aber nicht nur die Dimensionen der Grafik sondern auch das Format. Und genau das benötigst du, denn der Internet Explorer und vielleicht auch andere Browser liefern JPEG-Grafiken gelegentlich mit dem Media-Typ „imag/pjpeg“ aus. Daher die Empfehlung, das Grafikformat selbst mit PHP-Mitteln zu überprüfen und nicht blind den vom User Agent übergebenen Informationen zu vertrauen.

Übrigens solltest du Zeichenketten immer explizit als solche auszeichnen und nicht auf die Toleranz PHPs hoffen.
 
Also bei mir gibt die Funktion nur 4 Dinge aus
1. Höhe
2. Breite
3. Eine Zahl mit der ich wenig anfangen kann
4. Höhe und Breite in HTML Form
Was davon is denn der Dateityp ?
 
Hi,

Gumbo meinte letztlich, wenn du die Höhe und Breite deines Bildes über getimagesize bekommst, dann hast du sicherlich eine Vorgabe, wie groß das Bild nach deinen Vorgaben sein muss (sprich deine Verkleinerung). Sprich - du musst die neue Bildgröße errechnen.
 
saila hat gesagt.:
Sprich - du musst die neue Bildgröße errechnen.
Und zwar ungefaehr so (hier werden hochgeladene Bilder auf eine Breite von 90px gestutzt)
PHP:
list($width,$height)=getimagesize('images/'.$gallery['gallery'].'/'.$filename);
$thumbwidth=90;
$thumbheight=round($thumbwidth*($height/$width));
 
Die neue Größe wird in der Funktion resizeImage schon neu berechnet.

Und das mit getimagesize klappt jetzt garnicht mehr. jetzt werden auch in Firefox die Größen nicht mehr geändert.

+ Das verkleinern Funktioniert eigentlich wunderbar. Wird nur halt im Internet Explorer nicht durchgeführt. Größe und so berechnen is doch schon getan
 
Zuletzt bearbeitet:
Zurück