46356
Goto Top

Bilder Upload mit automatischer Größenanpassung funktioniert nicht

Guten Tag!

Ich habe hier ein PHP Script, der auch funktioniert, wenn ich die Datei genau angebe (bla.jpg). Dann wird diese Datei auf eine bestimmte Größe angepasst und in einem Ordner gespeichert.
Nun habe ich versucht ein Upload Formular dazu zu schreiben. Leider funkionierts dann nicht mehr!

Hier mein Code (Datei heißt upload3.php):

<form action="upload3.php" method="post" enctype="multipart/form-data">   
<input type="file" name="datei"><br>  
<input type="submit" value="Hochladen">   
</form>

<?php
$Grafikdatei = $_POST['datei'];  
$Bilddaten = getimagesize($Grafikdatei);

$OriginalBreite = $Bilddaten;
$OriginalHoehe = $Bilddaten[1];
$ThumbnailBreite = 123;

if($OriginalBreite < $ThumbnailBreite)
{
    $ThumbnailBreite=$OriginalBreite;
}

$Skalierungsfaktor = $OriginalBreite/$ThumbnailBreite;
$ThumbnailHoehe = intval($OriginalHoehe/$Skalierungsfaktor);

if($Bilddaten[2] == 1)
{
    $Originalgrafik = ImageCreateFromGIF($Grafikdatei);
    $Thumbnailgrafik = ImageCreateTrueColor($ThumbnailBreite, $ThumbnailHoehe);
    ImageCopyResized($Thumbnailgrafik, $Originalgrafik, 0, 0, 0, 0, $ThumbnailBreite, $ThumbnailHoehe, $OriginalBreite, $OriginalHoehe);
    ImageGIF($Thumbnailgrafik, "thumb_".$Grafikdatei);  
}
elseif($Bilddaten[2] == 2)
{
    $Originalgrafik = ImageCreateFromJPEG($Grafikdatei);
    $Thumbnailgrafik = ImageCreateTrueColor($ThumbnailBreite, $ThumbnailHoehe);
    ImageCopyResized($Thumbnailgrafik, $Originalgrafik, 0, 0, 0, 0, $ThumbnailBreite, $ThumbnailHoehe, $OriginalBreite, $OriginalHoehe);
    ImageJPEG($Thumbnailgrafik, "thumb_".$Grafikdatei);  
}
elseif($Bilddaten[2] == 3)
{
    $Originalgrafik = ImageCreateFromPNG($Grafikdatei);
    $Thumbnailgrafik = ImageCreateTrueColor($ThumbnailBreite, $ThumbnailHoehe);
    ImageCopyResized($Thumbnailgrafik, $Originalgrafik, 0, 0, 0, 0, $ThumbnailBreite, $ThumbnailHoehe, $OriginalBreite, $OriginalHoehe);
    ImagePNG($Thumbnailgrafik, "thumb_".$Grafikdatei);  
}

echo"<img src=\"thumb_",  
    $Grafikdatei,
    "\">";  

?>
</form>
</body>
</html>

Was ist da falsch?

Und hat vielleicht noch jemand eine Idee, wieso schon vor dem Absenden der Datei eine Fehlermeldung kommt oder wie ich diese wegbekomme?

Warning: Division by zero in /usr/export/www/vhosts/funnetwork/hosting/browserfish/test/upload3.php on line 19

Warning: Division by zero in /usr/export/www/vhosts/funnetwork/hosting/browserfish/test/upload3.php on line 20

Danke und einen schönen Sonntag, Alexander Breuss

Content-Key: 72665

Url: https://administrator.de/contentid/72665

Ausgedruckt am: 28.03.2024 um 15:03 Uhr

Mitglied: Dani
Dani 04.11.2007 um 11:46:54 Uhr
Goto Top
Hallo Alex,
die Fehlermeldung beschreibt dein Problem doch schon. Zeile 19 und 20 können nicht geparst werden, weil eine Division mit 0 nicht möglich ist.

Zeile 19 und 20:
$Skalierungsfaktor = $OriginalBreite/$ThumbnailBreite;
$ThumbnailHoehe = intval($OriginalHoehe/$Skalierungsfaktor);
Einfach alle Variablen mit "Echo" mal ausgeben. Dann siehst du ja, welche es ist.


Grüße
Dani
Mitglied: 46356
46356 04.11.2007 um 11:52:01 Uhr
Goto Top
Hallo Dani

Danke für deine Antwort!
Aber wieso kommt der Fehler bevor ich die Daten überhaupt absende?

Alex
Mitglied: Dani
Dani 04.11.2007 um 12:26:19 Uhr
Goto Top
Tja....eigentlich solltest du das Wissen, wenn du PHP programmierst. Den Grund kannst du hier nachlesen.


Grüße
Dani
Mitglied: EvilMoe
EvilMoe 04.11.2007 um 12:53:39 Uhr
Goto Top
Weil getimagesize doch erst die Daten auslesen kann wenn das Formular abgesendet wurde. Vorher existieren die Variablen nicht und es kommt zu den Fehler. Funktionsweise siehst du bei Danis Link.

EDIT: Bau ein isset($_POST['datei']) ein und packe alles hinter die Abfrage rein dann gibts keine Probleme mehr ;)